Skip to content

chore(deps): update dependency vite-plus to v1 - #2938

Closed
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/major-vite+
Closed

renovate[bot] wants to merge 1 commit into
mainfrom
renovate/major-vite+

Conversation

@renovate

@renovate renovate Bot commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
vite-plus (source) 0.0.0-commit.11393b1a9ec1739c5897fefd418bdb095a34db7e → 1.1.0 age adoption passing confidence

Release Notes

voidzero-dev/vite-plus (vite-plus)

v1.1.0: vite-plus v1.1.0: faster vp dev startup and clearer interactive prompts

Compare Source

Vite+ 1.1 starts vp dev faster and makes the interactive prompts clearer, alongside fixes for vp migrate, package-manager commands, and Windows terminals.

Highlights
  • vp dev reaches its local URL about 24% sooner and uses about 30% less memory in the parent process, because Vite+ no longer loads Vite and Vitest there before starting the dev server (#​2851), by @​camc314.
  • Interactive prompts render boxes, logs, and wrapped text consistently, with clearer hints, validation, and navigation instructions (#​2870), by @​cpojer.
Features
  • vp run sets npm_execpath and npm_config_user_agent for npm, pnpm, and Yarn, so tools such as npm-run-all2 use the project's package manager instead of falling back to npm (#​2895), by @​naokihaba and @​tarikermis.
  • Upgrade vite@8.3.1 to vite@8.3.3, rolldown@1.2.11 to rolldown@1.2.12, vitest@5.0.1 to vitest@5.0.3, oxlint@1.85.0 to oxlint@1.87.0, and oxfmt@0.70.0 to oxfmt@0.72.0. The new lint and format versions can flag code that passed before, so run vp fmt after upgrading if CI runs vp check. vp migrate now keeps the React Refresh allowCompoundComponents option because the bundled Oxlint supports it (#​2871, #​2896, #​2904), by @​voidzero-guard[bot].
Fixes & Enhancements
  • vp migrate keeps Oxlint rules written with plugin aliases (such as @typescript-eslint/*, react-hooks/*, and import-x/*) and removes rules the bundled Oxlint does not support, listing them in a warning (#​2820, #​2906), by @​TheAlexLichter and @​yusuke99.
  • vp migrate leaves projects without a declared package manager unpinned, keeps existing declarations, and points to vp env pin when it infers one (#​2817), by @​TheAlexLichter.
  • vp migrate reports a short error for a directory without package.json instead of an ENOENT stack trace (#​2821), by @​TheAlexLichter.
  • vp create in an existing pnpm workspace adds the catalog entries the new application needs, so installation no longer fails with ERR_PNPM_CATALOG_ENTRY_NOT_FOUND_FOR_SPEC (#​2808), by @​SaKaNa-Y.
  • On Windows, one Ctrl+C stops vpr scripts and managed Bun, pnpm, npm, and Yarn commands without leaving cmd.exe stuck at Terminate batch job (Y/N)? (#​2890), by @​fengmk2.
  • vp pack --watch on Windows rebuilds with the new options after the config file changes (#​2826), by @​liangmiQwQ.
  • vp test doctor and vp test complete run the Vitest subcommands instead of being treated as test file filters (#​2879), by @​liangmiQwQ.
  • With isolated dependency layouts such as pnpm's global virtual store, vp pack finds installed Vue language tools and TypeScript Go for declaration generation, and Playwright browser provider options keep their types (#​2868, #​2865), by @​liangmiQwQ.
  • Package-manager commands fail when the project's package manager does not support a named option, instead of silently dropping it and continuing. Bun 1.4.1+ receives --offline and --prefer-offline, and Yarn Classic accepts a single --filter for vp remove (#​2775), by @​jong-kyung.
  • vp pm config in Bun projects falls back to npm, as its warning says (#​2899), by @​jong-kyung.
  • vp pm approve-builds states that Yarn Berry disables third-party build scripts by default from 4.14.0, not in every version (#​2902), by @​jong-kyung.
  • vp implode asks you to type boom instead of uninstall to confirm (#​2901), by @​fengmk2.
  • Global package installs and updates print a green +, and removals a red -, with bold package names in both (#​2828), by @​liangmiQwQ.
  • Setup headings and command hints keep their colors when the installer captures stdout (#​2829), by @​liangmiQwQ.
Refactor
  • Replace semver with verkit in the CLI, reducing the bundled CLI JavaScript by about 26 KB (#​2837), by @​liangmiQwQ.
  • Share the shim filename logic between setup and vp env doctor, and remove unused config migration metadata (#​2876, #​2894), by @​jong-kyung.
Docs
Chore
Bundled Versions
Tool Version Source Changelog
vite 8.3.3 fea5b21 8.3.2, 8.3.3
rolldown 1.2.12 45e407b 1.2.12
tsdown 0.23.0 npm unchanged
vitest 5.0.3 npm 5.0.2, 5.0.3
oxlint 1.87.0 npm 1.86.0, 1.87.0
oxlint-tsgolint 7.0.2003 npm unchanged
oxfmt 0.72.0 npm 0.71.0, 0.72.0
Upgrade
vp upgrade
New Contributors

@​hyunbinseo

Full Changelog: v1.0.0...v1.1.0

Published Packages
  • @voidzero-dev/vite-plus-core@1.1.0
  • vite-plus@1.1.0
Installation

macOS/Linux:

curl -fsSL https://vite.plus | bash

Windows:

irm https://vite.plus/ps1 | iex

Or 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:1.1.0 vp build

Run any vp command without installing it; see the Docker guide for more.

v1.0.0: vite-plus v1.0.0: Vite+ 1.0 is stable

Compare Source

Vite+ 1.0 is stable (announcement). This release promotes v1.0.0-rc.1 to stable with no code changes.

Notable changes since v0.3.3

v1.0.0 includes everything from the two release candidates below. See each release's notes for the full list of changes.

  • v1.0.0-rc.0: vp test moves to vitest@5.0.1, and the CLI now requires Node.js ^22.18.0 || ^24.11.0 || >=26.0.0. vp staged has new Node.js and Git minimums. Standalone installs and vp upgrade verify release provenance.
  • v1.0.0-rc.1: task cache settings in run.tasks move under cache. vp lint and vp fmt run from a package directory now use the same config as your editor.

Projects on v1.0.0-rc.1 need no changes. Projects on v1.0.0-rc.0 whose tasks set env, untrackedEnv, input, or output should run vp migrate to move those settings under cache. For a Vite+ 0.3 project, follow Upgrade from Vite+ 0.3 to 1.0 and run vp migrate before you update the project's dependencies.

Bundled Versions
Tool Version Source
vite 8.3.1 39ddf7c
rolldown 1.2.11 8df4219
tsdown 0.23.0 npm
vitest 5.0.1 npm
oxlint 1.85.0 npm
oxlint-tsgolint 7.0.2003 npm
oxfmt 0.70.0 npm
Upgrade
vp upgrade

Full Changelog: v1.0.0-rc.1...v1.0.0

Published Packages
  • @voidzero-dev/vite-plus-core@1.0.0
  • vite-plus@1.0.0
Installation

macOS/Linux:

curl -fsSL https://vite.plus | bash

Windows:

irm https://vite.plus/ps1 | iex

Or 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:1.0.0 vp build

Run any vp command without installing it; see the Docker guide for more.

v0.3.3: vite-plus v0.3.3: Homebrew setup and workspace dependency fixes

Compare Source

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), by @​fengmk2.
  • Windows installations decode remote legacy PowerShell scripts correctly (#​2701), by @​james-elicx.
  • vp migrate removes the unsupported React Refresh allowCompoundComponents option and warns about possible lint errors (#​2702), by @​fengmk2.
  • New monorepo packages use the root lint configuration without a conflicting nested configuration (#​2667), by @​semimikoh.
  • Yarn Classic rejects filtered additions and removals instead of changing unintended dependencies (#​2705), by @​jong-kyung.
  • Yarn Berry rejects unsupported filtered updates and respects filters during recursive removal (#​2709, #​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), by @​jong-kyung.
  • vp dedupe warns about unsupported check options (#​2717), by @​jong-kyung.
  • Rust command output respects NO_COLOR (#​2716), by @​liangmiQwQ.
  • Windows commands find lowercase shims in directories with case-sensitive file names (#​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), by @​voidzero-guard[bot].
Docs
Chore
Bundled Versions
Tool Version Source
vite 8.3.0 434e8e9
rolldown 1.2.9 5b4746e
tsdown 0.23.0 npm
vitest 4.1.11 npm
oxlint 1.83.0 npm
oxlint-tsgolint 7.0.2001 npm
oxfmt 0.68.0 npm
Upgrade
vp upgrade
New Contributors

@​james-elicx

Full Changelog: v0.3.2...v0.3.3

Published Packages
  • @voidzero-dev/vite-plus-core@0.3.3
  • vite-plus@0.3.3
Installation

macOS/Linux:

curl -fsSL https://vite.plus | bash

Windows:

irm https://vite.plus/ps1 | iex

Or 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.3.3 vp build

Run any vp command without installing it; see the Docker guide for more.

v0.3.2: vite-plus v0.3.2: independent package-manager versions and Oxlint plugin APIs

Compare Source

vp env use now sets each package manager's version independently. This release also adds Oxlint plugin APIs and fixes migration, installation, and template extraction.

Breaking Changes
Package-manager overrides

Direct package-manager commands no longer use VP_PACKAGE_MANAGER. Use the matching version variable in shell profiles, CI jobs, and Dockerfiles:

Previous override for a direct command New override
VP_PACKAGE_MANAGER=npm@<version> VP_NPM_VERSION=<version>
VP_PACKAGE_MANAGER=pnpm@<version> VP_PNPM_VERSION=<version>
VP_PACKAGE_MANAGER=yarn@<version> VP_YARN_VERSION=<version>
VP_PACKAGE_MANAGER=bun@<version> VP_BUN_VERSION=<version>

VP_PACKAGE_MANAGER still selects the manager and version for vp install and related commands. vp env use pnpm@10 now changes only the direct pnpm commands. To override vp install, set VP_PACKAGE_MANAGER explicitly.

The old .session-package-manager file is no longer read or migrated. Run vp env use again to create the new session files. Projects that use only project pins or global defaults need no changes. See the environment guide (#​2658, #​2659), by @​liangmiQwQ.

Installer preferences

VP_NODE_MANAGER now controls only Node.js. Existing installations retain saved preferences during upgrades, so vp upgrade needs no configuration changes. For scripted installations, set VP_PM_MANAGER to apply the same choice to package managers:

Previous combined setting New combined setting
VP_NODE_MANAGER=no VP_NODE_MANAGER=no VP_PM_MANAGER=no
VP_NODE_MANAGER=yes VP_NODE_MANAGER=yes VP_PM_MANAGER=yes

Update installer commands in CI jobs and Dockerfiles. Use VP_NPM_MANAGER, VP_PNPM_MANAGER, VP_YARN_MANAGER, or VP_BUN_MANAGER for individual preferences. The interactive prompt retains its combined choice. See the installer variables guide (#​2681), by @​liangmiQwQ.

Vite DevTools

Projects that install @vitejs/devtools must update its dependency range from ^0.4.0 || ^0.5.0 to ^0.7.1. Projects without this optional dependency need no changes. This requirement comes with the Vite upgrade listed below.

Highlights
  • Installers and vp upgrade share setup behavior across platforms, which simplifies maintenance. The installers retain support for older releases (#​2611), by @​liangmiQwQ.
  • Custom Oxlint rules can import their APIs from vite-plus/lint/plugins and vite-plus/lint/plugins-dev. vp migrate updates supported existing imports (#​2328), by @​fengmk2.
  • vp install and vp add now honor --ignore-scripts for named packages and managed global installations (#​2682), by @​jong-kyung.
Features
  • The bundled tools update from vite@8.2.2 to vite@8.3.0 and from rolldown@1.2.7 to rolldown@1.2.8. They also update from oxlint@1.81.0 to oxlint@1.82.0 and from oxfmt@0.66.0 to oxfmt@0.67.0. The new linter and formatter can flag code that passed before. Run vp fmt after the upgrade if CI runs vp check (#​2670), by @​fengmk2.
Fixes & Enhancements
  • vp create rejects malformed registry versions that could place organization template files outside the cache directory (#​2665), by @​fengmk2.
  • vp env pin updates an active local .nvmrc and preserves its comments. Use --target nvmrc to select this file explicitly (#​2676), by @​ywenhao.
  • vp migrate reports unsupported ESLint rules that it skips, so users can review the missing checks (#​2689), by @​yusuke99.
  • vp migrate imports leftover tsdown configuration when a project already uses Vite+ (#​2646), by @​TheAlexLichter.
  • vp migrate accepts single-line JSON formatter configuration with a final newline (#​2643), by @​TheAlexLichter.
  • vp migrate avoids a redundant playwright dependency when the project already declares @playwright/test (#​2637), by @​yusuke99.
  • Newly scaffolded local generators honor --no-interactive and report missing arguments without prompts. Existing generators need the updated entrypoint (#​2677), by @​SaKaNa-Y.
  • vp upgrade installs its dependencies correctly when the installation directory is inside a pnpm workspace (#​2644), by @​fengmk2.
  • Nested package-manager commands retain the selected Node runtime and package-manager versions (#​2631), by @​lyzno1.
  • Built-in tools reuse the Node executable that starts the CLI. Editor lint and format servers work when node is absent from PATH (#​2673), by @​fengmk2.
  • The npm command wrapper enables Node's compile cache before it loads the CLI, which reduces repeated startup work (#​2648), by @​pablog12.
  • Package-manager commands suppress pnpm, npm, and supported Yarn update notices. Yarn 4 daily tips are also hidden (#​2649, #​2650, #​2651), by @​fengmk2.
  • Invalid package.json errors include the affected file's path (#​2683), by @​adamaveray.
Docs
  • The README task example uses the supported env field (#​2653), by @​SaKaNa-Y.
  • Migration guidance tells pnpm users to retain the generated vite and vitest dependencies (#​2660), by @​naokihaba.
  • Lint and format guides explain root configuration and overrides for monorepos. They clarify that nested configuration is not supported (#​2668), by @​liangmiQwQ.
Chore
Bundled Versions
Tool Version Source
vite 8.3.0 434e8e9
rolldown 1.2.8 9704b56
tsdown 0.23.0 npm
vitest 4.1.11 npm
oxlint 1.82.0 npm
oxlint-tsgolint 7.0.2001 npm
oxfmt 0.67.0 npm
Upgrade
vp upgrade
New Contributors

@​yusuke99, @​pablog12, @​SaKaNa-Y, @​ywenhao, @​adamaveray

Full Changelog: v0.3.1...v0.3.2

Published Packages
  • @voidzero-dev/vite-plus-core@0.3.2
  • vite-plus@0.3.2
Installation

macOS/Linux:

curl -fsSL https://vite.plus | bash

Windows:

irm https://vite.plus/ps1 | iex

Or 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.3.2 vp build

Run any vp command without installing it; see the Docker guide for more.

v0.3.1: vite-plus v0.3.1: manage package-manager versions with vp env

Compare Source

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.

  1. Run vp migrate to update supported static configurations and package scripts, including projects that already use Vite+.
  2. Check migration warnings in vite.config.*, tsdown.config.*, and package.json.
  3. Update dynamic configurations manually. Arrays built with .map() require manual changes, even when migration reports no warning.
  4. Run vp pack to 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 404 responses caused by separate Vite runtime copies (#​2617), by @​fengmk2.
  • Reduce the Windows vp-shim.exe size from 214 KiB to 14 KiB (#​2466), by @​fengmk2.
  • Add vp check --quiet to hide lint warning diagnostics while retaining errors and summary counts (#​2593), by @​RSS1102.
Features
  • Add vp sync-versions --json so automation can request dependency alignment plans from manifest snapshots without changing project files (#​2600), by @​afonsojramos.
  • Make vp create --git suggest an initial commit command after Git initialization (#​2581), by @​fengmk2.
  • Make vp migrate replace frozen voidzero-dev/setup-vp@v1 workflow references with the supported version pin (#​2540), by @​fengmk2.
  • Upgrade rolldown from 1.2.5 to 1.2.7, tsdown from 0.22.14 to 0.23.0, and Oxc from 0.146.0 to 0.148.0. Upgrade oxlint from 1.79.0 to 1.81.0 and oxfmt from 0.64.0 to 0.66.0. These versions can flag code that passed before. Run vp fmt after upgrading if CI runs vp check (#​2580, #​2613), by @​voidzero-guard[bot].
Fixes & Enhancements
  • Resolve package-manager versions without rewriting package.json. Use vp env pin or vp env unpin to change project declarations explicitly (#​2399), by @​liangmiQwQ.
  • Let vp migrate repair stale vitest aliases 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.x major (#​2612), by @​fengmk2.
  • Remove a deprecated tsdown option from the prompts package build (#​2597), by @​jong-kyung.
Refactor
Docs
Chore
Bundled Versions
Tool Version Source
vite 8.2.2 de1111a
rolldown 1.2.7 26b4c6e
tsdown 0.23.0 npm
vitest 4.1.11 npm
oxlint 1.81.0 npm
oxlint-tsgolint 7.0.2001 npm
oxfmt 0.66.0 npm
Upgrade
vp upgrade
New Contributors

@​afonsojramos, @​joschuba

Full Changelog: v0.3.0...v0.3.1

Published Packages
  • @voidzero-dev/vite-plus-core@0.3.1
  • vite-plus@0.3.1
Installation

macOS/Linux:

curl -fsSL https://vite.plus | bash

Windows:

irm https://vite.plus/ps1 | iex

Or 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.3.1 vp build

Run any vp command without installing it; see the Docker guide for more.

v0.3.0: vite-plus v0.3.0: XDG install layout, tsup project migration, and Bun 1.4 support

Compare Source

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-plus installs keep their current layout, and the installer 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>

    The installer configures your shell for the new location, and CI that installs through setup-vp keeps the single-root layout automatically. Update each hard-coded ~/.vite-plus/bin path, such as a path in a Dockerfile.

    vp upgrade leaves 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, then Remove-Item Env:\VP_HOME, Env:\VP_DATA_DIR, Env:\VP_BIN_DIR, Env:\VP_CACHE_DIR -ErrorAction SilentlyContinue, then irm https://vite.plus/ps1 | iex. Also delete any persistent VP_HOME or VP_*_DIR definition from your shell profile or system environment, because a fresh install still honors them and VP_HOME selects the single-root layout.

    vp implode removes 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 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](https://redirect.github.com/voidzero-d

❗ Important

✂ PR body was truncated to here.


Configuration

📅 Schedule: (in timezone Asia/Shanghai)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

♻ Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

✅ Staging deployment successful!

Preview: https://viteplus-staging.void.app/
Commit: d349bf6

@renovate
renovate Bot force-pushed the renovate/major-vite+ branch 29 times, most recently from 4573041 to 2433e2c Compare October 10, 2026 14:24
@renovate
renovate Bot force-pushed the renovate/major-vite+ branch 15 times, most recently from db99295 to 37fb6af Compare October 13, 2026 02:58
@renovate
renovate Bot force-pushed the renovate/major-vite+ branch from 37fb6af to d349bf6 Compare October 13, 2026 07:00
@fengmk2 fengmk2 closed this Oct 13, 2026
@renovate

renovate Bot commented Oct 13, 2026

Copy link
Copy Markdown
Contributor Author

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update. You will not get PRs for any future 1.x releases. But if you manually upgrade to 1.x then Renovate will re-enable minor and patch updates automatically.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

@renovate
renovate Bot deleted the renovate/major-vite+ branch October 13, 2026 07:15
fengmk2 added a commit that referenced this pull request Nov 12, 2026
> [!NOTE]
> This PR body was truncated due to platform limits.

This PR contains the following updates:

| Package | Change |
[Age](https://docs.renovatebot.com/merge-confidence/) |
[Adoption](https://docs.renovatebot.com/merge-confidence/) |
[Passing](https://docs.renovatebot.com/merge-confidence/) |
[Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|---|---|
| [@ast-grep/napi](https://ast-grep.github.io)
([source](https://redirect.github.com/ast-grep/ast-grep)) | [`0.51.0` →
`0.51.1`](https://renovatebot.com/diffs/npm/@ast-grep%2fnapi/0.51.0/0.51.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@ast-grep%2fnapi/0.51.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@ast-grep%2fnapi/0.51.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@ast-grep%2fnapi/0.51.0/0.51.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@ast-grep%2fnapi/0.51.0/0.51.1?slim=true)
|
| [@iconify/vue](https://iconify.design/)
([source](https://redirect.github.com/iconify/iconify/tree/HEAD/components/vue))
| [`5.0.1` →
`5.0.5`](https://renovatebot.com/diffs/npm/@iconify%2fvue/5.0.1/5.0.5) |
![age](https://developer.mend.io/api/mc/badges/age/npm/@iconify%2fvue/5.0.5?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@iconify%2fvue/5.0.5?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@iconify%2fvue/5.0.1/5.0.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@iconify%2fvue/5.0.1/5.0.5?slim=true)
|
|
[@nkzw/safe-word-list](https://redirect.github.com/nkzw-tech/safe-word-list)
| [`3.1.0` →
`3.1.2`](https://renovatebot.com/diffs/npm/@nkzw%2fsafe-word-list/3.1.0/3.1.2)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/@nkzw%2fsafe-word-list/3.1.2?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@nkzw%2fsafe-word-list/3.1.2?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@nkzw%2fsafe-word-list/3.1.0/3.1.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@nkzw%2fsafe-word-list/3.1.0/3.1.2?slim=true)
|
| [bingo](https://create.bingo)
([source](https://redirect.github.com/bingo-js/bingo/tree/HEAD/packages/bingo))
| [`^0.13.2` →
`^0.16.0`](https://renovatebot.com/diffs/npm/bingo/0.13.2/0.16.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/bingo/0.16.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/bingo/0.16.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/bingo/0.13.2/0.16.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/bingo/0.13.2/0.16.0?slim=true)
|
|
[es-module-lexer](https://redirect.github.com/guybedford/es-module-lexer)
| [`3.0.3` →
`3.0.4`](https://renovatebot.com/diffs/npm/es-module-lexer/3.0.3/3.0.4)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/es-module-lexer/3.0.4?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/es-module-lexer/3.0.4?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/es-module-lexer/3.0.3/3.0.4?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/es-module-lexer/3.0.3/3.0.4?slim=true)
|
| [fast-wrap-ansi](https://redirect.github.com/43081j/fast-wrap-ansi) |
[`0.2.0` →
`0.2.2`](https://renovatebot.com/diffs/npm/fast-wrap-ansi/0.2.0/0.2.2) |
![age](https://developer.mend.io/api/mc/badges/age/npm/fast-wrap-ansi/0.2.2?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/fast-wrap-ansi/0.2.2?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/fast-wrap-ansi/0.2.0/0.2.2?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/fast-wrap-ansi/0.2.0/0.2.2?slim=true)
|
| [mermaid](https://redirect.github.com/mermaid-js/mermaid) | [`12.2.0`
→ `12.3.0`](https://renovatebot.com/diffs/npm/mermaid/12.2.0/12.3.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/mermaid/12.3.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/mermaid/12.3.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/mermaid/12.2.0/12.3.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/mermaid/12.2.0/12.3.0?slim=true)
|
| [playwright](https://playwright.dev)
([source](https://redirect.github.com/microsoft/playwright)) | [`1.62.1`
→ `1.65.0`](https://renovatebot.com/diffs/npm/playwright/1.62.1/1.65.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/playwright/1.65.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/playwright/1.65.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/playwright/1.62.1/1.65.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/playwright/1.62.1/1.65.0?slim=true)
|
| [reka-ui](https://redirect.github.com/unovue/reka-ui) | [`2.9.9` →
`2.11.0`](https://renovatebot.com/diffs/npm/reka-ui/2.9.9/2.11.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/reka-ui/2.11.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/reka-ui/2.11.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/reka-ui/2.9.9/2.11.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/reka-ui/2.9.9/2.11.0?slim=true)
|
| [tailwindcss](https://tailwindcss.com)
([source](https://redirect.github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss))
| [`4.3.0` →
`4.3.5`](https://renovatebot.com/diffs/npm/tailwindcss/4.3.0/4.3.5) |
![age](https://developer.mend.io/api/mc/badges/age/npm/tailwindcss/4.3.5?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/tailwindcss/4.3.5?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/tailwindcss/4.3.0/4.3.5?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/tailwindcss/4.3.0/4.3.5?slim=true)
|
|
[vitepress-plugin-group-icons](https://redirect.github.com/yuyinws/vitepress-plugin-group-icons)
| [`1.7.5` →
`1.8.1`](https://renovatebot.com/diffs/npm/vitepress-plugin-group-icons/1.7.5/1.8.1)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/vitepress-plugin-group-icons/1.8.1?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitepress-plugin-group-icons/1.8.1?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitepress-plugin-group-icons/1.7.5/1.8.1?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitepress-plugin-group-icons/1.7.5/1.8.1?slim=true)
|
|
[vitepress-plugin-llms](https://redirect.github.com/okineadev/vitepress-plugin-llms)
| [`1.13.1` →
`1.14.0`](https://renovatebot.com/diffs/npm/vitepress-plugin-llms/1.13.1/1.14.0)
|
![age](https://developer.mend.io/api/mc/badges/age/npm/vitepress-plugin-llms/1.14.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vitepress-plugin-llms/1.14.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vitepress-plugin-llms/1.13.1/1.14.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vitepress-plugin-llms/1.13.1/1.14.0?slim=true)
|
| [vue](https://vuejs.org/)
([source](https://redirect.github.com/vuejs/core)) | [`3.5.35` →
`3.5.45`](https://renovatebot.com/diffs/npm/vue/3.5.35/3.5.45) |
![age](https://developer.mend.io/api/mc/badges/age/npm/vue/3.5.45?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/vue/3.5.45?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/vue/3.5.35/3.5.45?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/vue/3.5.35/3.5.45?slim=true)
|
| [wrangler](https://redirect.github.com/cloudflare/workers-sdk)
([source](https://redirect.github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler))
| [`4.127.1` →
`4.158.0`](https://renovatebot.com/diffs/npm/wrangler/4.127.1/4.158.0) |
![age](https://developer.mend.io/api/mc/badges/age/npm/wrangler/4.158.0?slim=true)
|
![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/wrangler/4.158.0?slim=true)
|
![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/wrangler/4.127.1/4.158.0?slim=true)
|
![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/wrangler/4.127.1/4.158.0?slim=true)
|

---

### Release Notes

<details>
<summary>ast-grep/ast-grep (@&#8203;ast-grep/napi)</summary>

###
[`v0.51.1`](https://redirect.github.com/ast-grep/ast-grep/blob/HEAD/CHANGELOG.md#0511)

[Compare
Source](https://redirect.github.com/ast-grep/ast-grep/compare/0.51.0...0.51.1)

> 2 November 2026

- fix(cli): report skipped files and reason in --inspect entity
[`#3044`](https://redirect.github.com/ast-grep/ast-grep/pull/3044)
- chore(deps): update rust crate tree-sitter-scala to v0.26.4
[`#3054`](https://redirect.github.com/ast-grep/ast-grep/pull/3054)
- fix(dynamic): only replace metavariable sigils with the expando char
[`#3052`](https://redirect.github.com/ast-grep/ast-grep/pull/3052)
- fix(core): keep $ followed by a digit literal in fix templates
[`#3045`](https://redirect.github.com/ast-grep/ast-grep/pull/3045)
- fix(deps): update rust-wasm-bindgen monorepo
[`#3046`](https://redirect.github.com/ast-grep/ast-grep/pull/3046)
- Fix macOS universal2 wheel matching
[`#3050`](https://redirect.github.com/ast-grep/ast-grep/pull/3050)
- chore(deps): update rust crate napi-derive to v3.7.0
[`#3049`](https://redirect.github.com/ast-grep/ast-grep/pull/3049)
- chore(deps): update rust crate napi to v3.16.1
[`#3047`](https://redirect.github.com/ast-grep/ast-grep/pull/3047)
- fix(scan): bind utilDirs utils for --inline-rules and --rules
[`#2943`](https://redirect.github.com/ast-grep/ast-grep/pull/2943)
- fix(cli): percent-encode file paths in sarif uri
[`#3042`](https://redirect.github.com/ast-grep/ast-grep/pull/3042)
- chore(deps): update dependency node to v26
[`#3043`](https://redirect.github.com/ast-grep/ast-grep/pull/3043)
- chore(deps): update dependency oxlint to v1.90.0
[`#3036`](https://redirect.github.com/ast-grep/ast-grep/pull/3036)
- chore(deps): update astral-sh/setup-uv action to v10.3.3
[`#3040`](https://redirect.github.com/ast-grep/ast-grep/pull/3040)
- chore(deps): update rust crate globset to v0.4.21
[`#3037`](https://redirect.github.com/ast-grep/ast-grep/pull/3037)
- chore(deps): update rust crate ignore to v0.4.34
[`#3038`](https://redirect.github.com/ast-grep/ast-grep/pull/3038)
- chore(deps): update dependency node to v26
[`#3039`](https://redirect.github.com/ast-grep/ast-grep/pull/3039)
- fix(sarif): set the log version to 2.1.0
[`#3035`](https://redirect.github.com/ast-grep/ast-grep/pull/3035)
- fix(cli): escape special characters in github format output
[`#3034`](https://redirect.github.com/ast-grep/ast-grep/pull/3034)
- chore(deps): update dependency web-tree-sitter to ^0.26.0 || ^0.27.0
[`#3019`](https://redirect.github.com/ast-grep/ast-grep/pull/3019)
- chore(deps): update dependency dprint to v0.64.3
[`#3029`](https://redirect.github.com/ast-grep/ast-grep/pull/3029)
- chore(deps): update rust crate smallvec to v1.16.4
[`#3030`](https://redirect.github.com/ast-grep/ast-grep/pull/3030)
- chore(deps): update rust crate similar to v3.2.1
[`#3031`](https://redirect.github.com/ast-grep/ast-grep/pull/3031)
- chore(deps): update rust crate tree-sitter-md to v0.5.4
[`#3032`](https://redirect.github.com/ast-grep/ast-grep/pull/3032)
- fix(deps): update rust crate tree-sitter-dart to 0.3.0
[`#3033`](https://redirect.github.com/ast-grep/ast-grep/pull/3033)
- chore(deps): update dependency oxlint to v1.89.0
[`#3018`](https://redirect.github.com/ast-grep/ast-grep/pull/3018)
- chore(deps): update dependency
[@&#8203;napi-rs/cli](https://redirect.github.com/napi-rs/cli) to
v3.10.9
[`#3025`](https://redirect.github.com/ast-grep/ast-grep/pull/3025)
- chore(deps): update rust crate napi-derive to v3.6.13
[`#3026`](https://redirect.github.com/ast-grep/ast-grep/pull/3026)
- chore(deps): update rust crate napi to v3.15.0
[`#3028`](https://redirect.github.com/ast-grep/ast-grep/pull/3028)
- chore(deps): update astral-sh/setup-uv action to v10.3.2
[`#3024`](https://redirect.github.com/ast-grep/ast-grep/pull/3024)
- chore(deps): update dependency dprint to v0.64.1
[`#3017`](https://redirect.github.com/ast-grep/ast-grep/pull/3017)
- chore(deps): update rust crate tokio to v1.54.1
[`#3020`](https://redirect.github.com/ast-grep/ast-grep/pull/3020)
- refactor(cli): apply project defaults through InputArgs
[`#3027`](https://redirect.github.com/ast-grep/ast-grep/pull/3027)
- feat(cli): support no-ignore in project config
[`#3003`](https://redirect.github.com/ast-grep/ast-grep/pull/3003)
- fix(deps): update rust crate tree-sitter-php to 0.25.0
[`#3022`](https://redirect.github.com/ast-grep/ast-grep/pull/3022)
- chore(deps): update rust crate tree-sitter to v0.27.1
[`#3014`](https://redirect.github.com/ast-grep/ast-grep/pull/3014)
- chore(deps): update dependency
[@&#8203;ast-grep/napi](https://redirect.github.com/ast-grep/napi) to
v0.51.0
[`#3016`](https://redirect.github.com/ast-grep/ast-grep/pull/3016)
- chore(deps): update rust crate tree-sitter-scala to v0.26.3
[`#3015`](https://redirect.github.com/ast-grep/ast-grep/pull/3015)
- chore(deps): update astral-sh/setup-uv action to v10.3.0
[`#2938`](https://redirect.github.com/ast-grep/ast-grep/pull/2938)
- chore(deps): update dependency
[@&#8203;napi-rs/cli](https://redirect.github.com/napi-rs/cli) to
v3.10.8
[`#3004`](https://redirect.github.com/ast-grep/ast-grep/pull/3004)
- chore(deps): update rust crate toml_edit to v0.25.17
[`#3013`](https://redirect.github.com/ast-grep/ast-grep/pull/3013)
- chore(deps): update rust crate smallvec to v1.16.3
[`#3011`](https://redirect.github.com/ast-grep/ast-grep/pull/3011)
- chore(deps): update rust crate tokio-util to v0.7.20
[`#3012`](https://redirect.github.com/ast-grep/ast-grep/pull/3012)
- chore(deps): update rust crate schemars to v1.2.3
[`#3009`](https://redirect.github.com/ast-grep/ast-grep/pull/3009)
- chore(deps): update rust crate serde_json to v1.0.154
[`#3010`](https://redirect.github.com/ast-grep/ast-grep/pull/3010)
- chore(deps): update dependency
[@&#8203;types/node](https://redirect.github.com/types/node) to v24.19.2
[`#3007`](https://redirect.github.com/ast-grep/ast-grep/pull/3007)
- chore(deps): update dependency web-tree-sitter to ^0.27.0
[`#2914`](https://redirect.github.com/ast-grep/ast-grep/pull/2914)
- chore(deps): update rust crate napi-derive to v3.6.12
[`#3008`](https://redirect.github.com/ast-grep/ast-grep/pull/3008)
- chore(deps): update dependency smol-toml to v1.9.1
[`#2985`](https://redirect.github.com/ast-grep/ast-grep/pull/2985)
- fix(deps): update rust-wasm-bindgen monorepo
[`#2924`](https://redirect.github.com/ast-grep/ast-grep/pull/2924)
- chore(deps): update rust crate tree-sitter-swift to v0.7.4
[`#2982`](https://redirect.github.com/ast-grep/ast-grep/pull/2982)
- chore(deps): update rust crate napi-build to v2.6.0
[`#2987`](https://redirect.github.com/ast-grep/ast-grep/pull/2987)
- chore(deps): update rust crate napi to v3.14.2
[`#2986`](https://redirect.github.com/ast-grep/ast-grep/pull/2986)
- fix(config): reject unknown top-level keys in rule config
[`#3006`](https://redirect.github.com/ast-grep/ast-grep/pull/3006)
- fix(cli): report skipped files and reason in --inspect entity
([#&#8203;3044](https://redirect.github.com/ast-grep/ast-grep/issues/3044))
[`#2990`](https://redirect.github.com/ast-grep/ast-grep/issues/2990)
- fix(config): reject unknown top-level keys in rule config
([#&#8203;3006](https://redirect.github.com/ast-grep/ast-grep/issues/3006))
[`#2963`](https://redirect.github.com/ast-grep/ast-grep/issues/2963)
- Revert "chore(deps): update dependency node to v26
([#&#8203;3039](https://redirect.github.com/ast-grep/ast-grep/issues/3039))"
[`6b5708a`](https://redirect.github.com/ast-grep/ast-grep/commit/6b5708a32991134bf0bef6ec158d071a6612a79c)
- fix: mark GlobalRules::insert crate pub only and unsafe
[`e52c478`](https://redirect.github.com/ast-grep/ast-grep/commit/e52c4783d89576fb265e0746603c1848250a11a4)
- fix: fix web-tree-sitter 0.26 memory corruption
[`ecb8578`](https://redirect.github.com/ast-grep/ast-grep/commit/ecb85782c2381bfca337156c89bbe91972de3b1a)

</details>

<details>
<summary>bingo-js/bingo (bingo)</summary>

###
[`v0.16.0`](https://redirect.github.com/bingo-js/bingo/blob/HEAD/packages/bingo/CHANGELOG.md#0160)

[Compare
Source](https://redirect.github.com/bingo-js/bingo/compare/bingo@0.15.0...bingo@0.16.0)

##### Minor Changes

- [#&#8203;552](https://redirect.github.com/bingo-js/bingo/pull/552)
[`8f50ea7`](https://redirect.github.com/bingo-js/bingo/commit/8f50ea7e8bdc4608213bfaba2108d2aebb1e8470)
Thanks [@&#8203;michaelfaith](https://redirect.github.com/michaelfaith)!
- Bumped Node support to `^22.22.2 || ^24.15.0 || >=26.0.0`. Namely,
this just means a slightly higher minimum for v22.

##### Patch Changes

- [#&#8203;544](https://redirect.github.com/bingo-js/bingo/pull/544)
[`94c14ee`](https://redirect.github.com/bingo-js/bingo/commit/94c14ee7d83e96a24efe67d21510578e4dd79e54)
Thanks [@&#8203;michaelfaith](https://redirect.github.com/michaelfaith)!
- Updated attribution for all packages to include both maintainers.

- [#&#8203;553](https://redirect.github.com/bingo-js/bingo/pull/553)
[`41f0dbe`](https://redirect.github.com/bingo-js/bingo/commit/41f0dbe2d45509e82bf9569bd815df4d9174414d)
Thanks [@&#8203;michaelfaith](https://redirect.github.com/michaelfaith)!
- *Deps:* Updated `hosted-git-info` to v10.

- [#&#8203;551](https://redirect.github.com/bingo-js/bingo/pull/551)
[`f256818`](https://redirect.github.com/bingo-js/bingo/commit/f25681821ac79bccf85a71322cd644b995b9ea81)
Thanks [@&#8203;michaelfaith](https://redirect.github.com/michaelfaith)!
- Bumped multiple dependencies.

- Updated dependencies
\[[`94c14ee`](https://redirect.github.com/bingo-js/bingo/commit/94c14ee7d83e96a24efe67d21510578e4dd79e54),
[`f256818`](https://redirect.github.com/bingo-js/bingo/commit/f25681821ac79bccf85a71322cd644b995b9ea81),
[`8f50ea7`](https://redirect.github.com/bingo-js/bingo/commit/8f50ea7e8bdc4608213bfaba2108d2aebb1e8470)]:
  - bingo-fs\@&#8203;0.8.0
  - bingo-requests\@&#8203;0.7.0
  - bingo-systems\@&#8203;0.9.0

###
[`v0.15.0`](https://redirect.github.com/bingo-js/bingo/blob/HEAD/packages/bingo/CHANGELOG.md#0150)

[Compare
Source](https://redirect.github.com/bingo-js/bingo/compare/bingo@0.14.0...bingo@0.15.0)

##### Minor Changes

- [#&#8203;495](https://redirect.github.com/bingo-js/bingo/pull/495)
[`1e0acec`](https://redirect.github.com/bingo-js/bingo/commit/1e0acece25c593e8f22727006ed239c440c287e3)
Thanks [@&#8203;michaelfaith](https://redirect.github.com/michaelfaith)!
- Added `exports` conditions to the package to establish a strict public
API.
In addition to the primary entry point, the `package.json` is also
exported.

- [#&#8203;495](https://redirect.github.com/bingo-js/bingo/pull/495)
[`1e0acec`](https://redirect.github.com/bingo-js/bingo/commit/1e0acece25c593e8f22727006ed239c440c287e3)
Thanks [@&#8203;michaelfaith](https://redirect.github.com/michaelfaith)!
- Updated supported versions of node to `^22.15.0 || ^24.15.0 ||
>=26.0.0`, removing support for EoL versions.

##### Patch Changes

- [#&#8203;509](https://redirect.github.com/bingo-js/bingo/pull/509)
[`89223e9`](https://redirect.github.com/bingo-js/bingo/commit/89223e9724b08d8747ad7e9d91bd07bff623d6b5)
Thanks [@&#8203;michaelfaith](https://redirect.github.com/michaelfaith)!
- Declared `sideEffects: false` to the package.json.
- Updated dependencies
\[[`1e0acec`](https://redirect.github.com/bingo-js/bingo/commit/1e0acece25c593e8f22727006ed239c440c287e3),
[`1e0acec`](https://redirect.github.com/bingo-js/bingo/commit/1e0acece25c593e8f22727006ed239c440c287e3),
[`89223e9`](https://redirect.github.com/bingo-js/bingo/commit/89223e9724b08d8747ad7e9d91bd07bff623d6b5)]:
  - bingo-fs\@&#8203;0.7.0
  - bingo-requests\@&#8203;0.6.0
  - bingo-systems\@&#8203;0.8.0

###
[`v0.14.0`](https://redirect.github.com/bingo-js/bingo/blob/HEAD/packages/bingo/CHANGELOG.md#0140)

[Compare
Source](https://redirect.github.com/bingo-js/bingo/compare/bingo@0.13.2...bingo@0.14.0)

##### Minor Changes

- [#&#8203;480](https://redirect.github.com/bingo-js/bingo/pull/480)
[`471336b`](https://redirect.github.com/bingo-js/bingo/commit/471336be2234f8569c0b7ad0cadebb9f5fc388cd)
Thanks [@&#8203;mike-4040](https://redirect.github.com/mike-4040)! -
Declare `zod` as an optional peer dependency

`bingo` and the `input-from-*` packages list `zod` (`^4.4.3`) under both
`dependencies` and optional `peerDependencies`.
Package managers that support peers with defaults, such as pnpm and
Yarn, give `bingo` the project's own copy of `zod` and warn when its
version falls outside the supported range.
Projects that use `zod` only through `bingo` get it installed as a
regular dependency.

</details>

<details>
<summary>guybedford/es-module-lexer (es-module-lexer)</summary>

###
[`v3.0.4`](https://redirect.github.com/guybedford/es-module-lexer/releases/tag/3.0.4)

[Compare
Source](https://redirect.github.com/guybedford/es-module-lexer/compare/3.0.3...3.0.4)

#### What's Changed

- perf(lexer): reduce TS lookahead work by
[@&#8203;BridgeAR](https://redirect.github.com/BridgeAR) in
[#&#8203;258](https://redirect.github.com/guybedford/es-module-lexer/pull/258)
- fix(parser): preserve complete import attribute metadata by
[@&#8203;BridgeAR](https://redirect.github.com/BridgeAR) in
[#&#8203;260](https://redirect.github.com/guybedford/es-module-lexer/pull/260)
- fix(ts): lex `/` after a postfix non-null assertion as division by
[@&#8203;guybedford](https://redirect.github.com/guybedford) in
[#&#8203;263](https://redirect.github.com/guybedford/es-module-lexer/pull/263)
- ci: add release and publish workflows by
[@&#8203;guybedford](https://redirect.github.com/guybedford) in
[#&#8203;264](https://redirect.github.com/guybedford/es-module-lexer/pull/264)

**Full Changelog**:
<guybedford/es-module-lexer@3.0.3...3.0.4>

</details>

<details>
<summary>43081j/fast-wrap-ansi (fast-wrap-ansi)</summary>

###
[`v0.2.2`](https://redirect.github.com/43081j/fast-wrap-ansi/releases/tag/0.2.2)

[Compare
Source](https://redirect.github.com/43081j/fast-wrap-ansi/compare/0.2.0...0.2.2)

#### What's Changed

- chore: fix typescript build by
[@&#8203;43081j](https://redirect.github.com/43081j) in
[#&#8203;95](https://redirect.github.com/43081j/fast-wrap-ansi/pull/95)

**Full Changelog**:
<43081j/fast-wrap-ansi@0.2.1...0.2.2>

</details>

<details>
<summary>mermaid-js/mermaid (mermaid)</summary>

###
[`v12.3.0`](https://redirect.github.com/mermaid-js/mermaid/releases/tag/mermaid%4012.3.0)

[Compare
Source](https://redirect.github.com/mermaid-js/mermaid/compare/mermaid@12.2.0...mermaid@12.3.0)

##### Minor Changes

-
[#&#8203;8164](https://redirect.github.com/mermaid-js/mermaid/pull/8164)
[`592d0e4`](https://redirect.github.com/mermaid-js/mermaid/commit/592d0e407d557b501d9f273ed18c7c62b1b9f48b)
Thanks [@&#8203;filipsajdak](https://redirect.github.com/filipsajdak)! -
feat: add the open-arrow and hollow-circle edge markers, so a notation
can tell two kinds of flow apart by whether the head is filled

-
[#&#8203;8165](https://redirect.github.com/mermaid-js/mermaid/pull/8165)
[`5c8aa5d`](https://redirect.github.com/mermaid-js/mermaid/commit/5c8aa5d834b7090258259eaf8b827cbefd6ff40f)
Thanks [@&#8203;filipsajdak](https://redirect.github.com/filipsajdak)! -
feat: add the BPMN element shapes - events, gateways, activities, data
objects, data stores and text annotations - each reporting where a line
meets what is drawn

-
[#&#8203;8470](https://redirect.github.com/mermaid-js/mermaid/pull/8470)
[`692d22a`](https://redirect.github.com/mermaid-js/mermaid/commit/692d22a3ec9cf235cecf17013160f14dafb42999)
Thanks
[@&#8203;openmindednewby](https://redirect.github.com/openmindednewby)!
- feat: flowchart edges accept a `step` number (`e1@{ step: 1 }`); a dot
travels the edges in step order and loops, hidden under
`prefers-reduced-motion`

-
[#&#8203;8478](https://redirect.github.com/mermaid-js/mermaid/pull/8478)
[`56aa105`](https://redirect.github.com/mermaid-js/mermaid/commit/56aa10536075a320c084087478c468553b923e6e)
Thanks
[@&#8203;openmindednewby](https://redirect.github.com/openmindednewby)!
- feat: add `flowchart.stepDuration` to set how many seconds each step
of the flowchart step animation lasts

-
[#&#8203;8479](https://redirect.github.com/mermaid-js/mermaid/pull/8479)
[`800f7ef`](https://redirect.github.com/mermaid-js/mermaid/commit/800f7efb1c7e80cf56478507808c744a1d07e1c1)
Thanks
[@&#8203;openmindednewby](https://redirect.github.com/openmindednewby)!
- feat: highlight the flowchart edge whose step is playing, in sync with
the step animation dot

-
[#&#8203;8480](https://redirect.github.com/mermaid-js/mermaid/pull/8480)
[`50d6294`](https://redirect.github.com/mermaid-js/mermaid/commit/50d6294dab27123d7ecc1301c2c861bfe7ef4dce)
Thanks
[@&#8203;openmindednewby](https://redirect.github.com/openmindednewby)!
- feat: add `flowchart.stepNumbers` to show each step edge's number in a
badge

##### Patch Changes

-
[#&#8203;8443](https://redirect.github.com/mermaid-js/mermaid/pull/8443)
[`2ff8286`](https://redirect.github.com/mermaid-js/mermaid/commit/2ff8286f9aa82b89aefe26c575c49a575fa518c1)
Thanks [@&#8203;knsv-bot](https://redirect.github.com/knsv-bot)! - fix:
agentflow renders the `a[/…/]` short form as an input instead of falling
back to a task with a SHAPE_UNSUPPORTED warning

-
[#&#8203;8661](https://redirect.github.com/mermaid-js/mermaid/pull/8661)
[`b200b27`](https://redirect.github.com/mermaid-js/mermaid/commit/b200b270f5e51d9199c5263dc402f4a6fe4fa33a)
Thanks [@&#8203;pbrolin47](https://redirect.github.com/pbrolin47)! -
fix: Bump DOMPurify to 3.4.17 to address GHSA-55q2-fjhq-7xh7 and
GHSA-6688-9rhm-gjv2

-
[#&#8203;8633](https://redirect.github.com/mermaid-js/mermaid/pull/8633)
[`686f350`](https://redirect.github.com/mermaid-js/mermaid/commit/686f350e8c7627dfcc6b0035f237f76bca1152b2)
Thanks [@&#8203;sidharthv96](https://redirect.github.com/sidharthv96)! -
chore: Remove the `uuid` dependency and the unused legacy ER diagram
renderer

-
[#&#8203;8661](https://redirect.github.com/mermaid-js/mermaid/pull/8661)
[`7eec083`](https://redirect.github.com/mermaid-js/mermaid/commit/7eec083adcaba707257795feb937f2274c990713)
Thanks [@&#8203;pbrolin47](https://redirect.github.com/pbrolin47)! -
fix: Stop an edge from a node inside a subgraph from crossing an edge
from the subgraph itself to the same node with ELK 0.10+ (e.g. `outer
--> a` with `da --> a`, or `three --> two` with `two --> c2`)

-
[#&#8203;8532](https://redirect.github.com/mermaid-js/mermaid/pull/8532)
[`42d3760`](https://redirect.github.com/mermaid-js/mermaid/commit/42d37602aed5ddbfb2674b78e08336fa5f3fb548)
Thanks [@&#8203;Devehab](https://redirect.github.com/Devehab)! - fix:
upgrade bundled elkjs from 0.9.3 to 0.12.0, which is licensed `EPL-2.0
OR GPL-3.0-or-later`, so GPL-3.0 projects can ship mermaid with ELK

-
[#&#8203;8162](https://redirect.github.com/mermaid-js/mermaid/pull/8162)
[`d5ca27a`](https://redirect.github.com/mermaid-js/mermaid/commit/d5ca27a636a2a5b65768c8ef3f847601dac055a9)
Thanks [@&#8203;filipsajdak](https://redirect.github.com/filipsajdak)! -
fix(swimlanes): size a lane that holds a nested subgraph (TB drew it as
an empty 0x0 box, and likewise an outer group holding lanes), and grow
LR and RL lanes by the nested group's padding

-
[#&#8203;8405](https://redirect.github.com/mermaid-js/mermaid/pull/8405)
[`b4299f2`](https://redirect.github.com/mermaid-js/mermaid/commit/b4299f2f440e63092caab6fdfe2d1b6cc19308a8)
Thanks [@&#8203;filipsajdak](https://redirect.github.com/filipsajdak)! -
fix: do not draw a stray empty swimlane when a node is listed in two
lanes, and warn about it and about a subgraph nested in a lane

-
[#&#8203;8385](https://redirect.github.com/mermaid-js/mermaid/pull/8385)
[`37d0ace`](https://redirect.github.com/mermaid-js/mermaid/commit/37d0aceb1e435490a7614299d035c7dc91729282)
Thanks [@&#8203;filipsajdak](https://redirect.github.com/filipsajdak)! -
fix(swimlanes): keep two arrowheads that land on one face of a node
apart when a sibling edge is straightened

-
[#&#8203;8385](https://redirect.github.com/mermaid-js/mermaid/pull/8385)
[`38e810a`](https://redirect.github.com/mermaid-js/mermaid/commit/38e810afe946ac4ebf48b7274c02689e032c51db)
Thanks [@&#8203;filipsajdak](https://redirect.github.com/filipsajdak)! -
fix(swimlanes): an edge routed round the outside of a diamond now
arrives at one of its vertices instead of ending in empty space beside
it

-
[#&#8203;8385](https://redirect.github.com/mermaid-js/mermaid/pull/8385)
[`25d7e31`](https://redirect.github.com/mermaid-js/mermaid/commit/25d7e314d143efb31b5f0813f9ee5fb7b50bd19b)
Thanks [@&#8203;filipsajdak](https://redirect.github.com/filipsajdak)! -
fix(swimlanes): a second edge leaving a diamond on the same level as its
target now leaves from a free vertex instead of running beside the first

-
[#&#8203;8171](https://redirect.github.com/mermaid-js/mermaid/pull/8171)
[`a4750b4`](https://redirect.github.com/mermaid-js/mermaid/commit/a4750b42aa697b2fed476cdfb297407b70b61e8e)
Thanks [@&#8203;filipsajdak](https://redirect.github.com/filipsajdak)! -
fix: dock a swimlane edge on the shape it points at, so a line reaches
an event's ring instead of stopping at the room its caption reserves

-
[#&#8203;8385](https://redirect.github.com/mermaid-js/mermaid/pull/8385)
[`67315b9`](https://redirect.github.com/mermaid-js/mermaid/commit/67315b937147ad06ce202dd9bdaaa219697b55d4)
Thanks [@&#8203;filipsajdak](https://redirect.github.com/filipsajdak)! -
fix: an edge label no longer pushes the nodes it joins a rank apart

-
[#&#8203;8385](https://redirect.github.com/mermaid-js/mermaid/pull/8385)
[`21a1f5c`](https://redirect.github.com/mermaid-js/mermaid/commit/21a1f5c11de99daef5dae6639c9cd4649ae62efd)
Thanks [@&#8203;filipsajdak](https://redirect.github.com/filipsajdak)! -
fix(swimlanes): stop the crossing cleanup from joining two routes at a
corner so they read as one line

-
[#&#8203;8385](https://redirect.github.com/mermaid-js/mermaid/pull/8385)
[`e14bc3a`](https://redirect.github.com/mermaid-js/mermaid/commit/e14bc3a752b1c18e01fef3e849ae83bc0f35417f)
Thanks [@&#8203;filipsajdak](https://redirect.github.com/filipsajdak)! -
fix(swimlanes): an edge no longer arrives at the vertex of a hexagon
that another edge leaves from

-
[#&#8203;8459](https://redirect.github.com/mermaid-js/mermaid/pull/8459)
[`edd162f`](https://redirect.github.com/mermaid-js/mermaid/commit/edd162f3f052649709a660cff4b511ed45584d7f)
Thanks [@&#8203;Yun-seoung](https://redirect.github.com/Yun-seoung)! -
fix: Allow flowchart edge IDs regardless of whitespace after the node
shape

  Edge IDs may no longer contain `[ ] ( ) { } |`.

-
[#&#8203;8402](https://redirect.github.com/mermaid-js/mermaid/pull/8402)
[`4f2bade`](https://redirect.github.com/mermaid-js/mermaid/commit/4f2bade8434bf25e9b3daf3fdd873515ae70ce23)
Thanks [@&#8203;pcp-cmd](https://redirect.github.com/pcp-cmd)! - fix:
Render use case include and extend relationship labels with UML
guillemets.

</details>

<details>
<summary>microsoft/playwright (playwright)</summary>

###
[`v1.65.0`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.65.0)

[Compare
Source](https://redirect.github.com/microsoft/playwright/compare/v1.64.1...v1.65.0)

##### 🥟 Run tests with Bun

The test runner now runs under [Bun](https://bun.com). Bun transpiles
your TypeScript test files itself, so Playwright does not use Babel or
its compilation cache. Pass the `--bun` flag, because without it `bunx
playwright test` runs on Node.js:

```bash
bunx --bun playwright test
```

Our CI runs the test runner tests under Bun 1.4.3 on Linux. Some
features work differently under Bun:

- There is no watch mode. UI mode does not run tests again when files
change, and `--only-changed` does not follow imports.
- Bun loads modules itself, so `--tsconfig` and the JSX options in
`tsconfig.json` have no effect, and custom ESM loaders are not
supported.
- Stack traces do not include async frames, and API names do not include
the class name: `click` instead of `locator.click`. This changes some
step locations, step titles and error messages.
- Console output of a test does not get into the trace and UI mode.

##### 🚨 Reports with only failures

New
[`failures`](https://playwright.dev/docs/test-reporters#failures-reporter)
reporter prints failures and successful retries as they occur, followed
by a summary, without progress output.

New `onlyFailures` option of the HTML, JSON and JUnit reporters [keeps
only](https://playwright.dev/docs/test-reporters#report-only-failures)
tests with unexpected outcomes, flaky tests and interrupted tests:

```js
// playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
  reporter: [
    ['failures'],
    ['html', { onlyFailures: true }],
  ],
});
```

##### 🎯 Test runner

- New built-in `-exclusive-` [test
lock](https://playwright.dev/docs/test-parallel#test-locks) runs a test
only when no other tests are running. All other tests continue to run in
parallel with each other:

  ```js
  test('restart the server', { lock: '-exclusive-' }, async () => {
    // No other test runs while this one is running.
  });
  ```

- [test.skip()](https://playwright.dev/docs/api/class-test#test-skip),
[test.fixme()](https://playwright.dev/docs/api/class-test#test-fixme),
[test.fail()](https://playwright.dev/docs/api/class-test#test-fail) and
[test.slow()](https://playwright.dev/docs/api/class-test#test-slow) now
accept only a description. It is recorded in the test annotation:

  ```js
  test('upload a file', async ({ page }) => {
    test.skip('Not implemented yet');
  });
  ```

- New `PLAYWRIGHT_TRANSFORM_CACHE_DIR` environment variable sets the
directory for transpiled test files, for example on a Linux machine
shared with other users.

##### New APIs

- New options
[`timeout`](https://playwright.dev/docs/api/class-cdpsession#cdp-session-send-option-timeout)
and
[`signal`](https://playwright.dev/docs/api/class-cdpsession#cdp-session-send-option-signal)
in
[cdpSession.send()](https://playwright.dev/docs/api/class-cdpsession#cdp-session-send).
- New
[testRun.mode()](https://playwright.dev/docs/api/class-testrun#test-run-mode)
returns the execution mode of a suite during
[reporter.preprocess()](https://playwright.dev/docs/api/class-reporter#reporter-preprocess).

##### Notable Changes ⚠️

- TypeScript class fields now follow
[`useDefineForClassFields`](https://playwright.dev/docs/test-typescript#tsconfig-class-fields)
from your `tsconfig.json`, the same as `tsc`. It is enabled for `ES2022`
and later targets, and when `target` is not specified. A field
initializer that reads a constructor parameter property now fails,
because the initializer runs first:

  ```js
  class LoginPage {
// TypeError: Cannot read properties of undefined (reading 'getByRole')
    readonly submit = this.page.getByRole('button', { name: 'Submit' });

    constructor(private readonly page: Page) {}
  }
  ```

Move the initialization to the constructor, or set
`"useDefineForClassFields": false` in your `tsconfig.json`.

- Actions such as
[locator.click()](https://playwright.dev/docs/api/class-locator#locator-click),
[locator.check()](https://playwright.dev/docs/api/class-locator#locator-check),
[locator.tap()](https://playwright.dev/docs/api/class-locator#locator-tap),
[locator.fill()](https://playwright.dev/docs/api/class-locator#locator-fill),
[locator.clear()](https://playwright.dev/docs/api/class-locator#locator-clear)
and
[locator.selectOption()](https://playwright.dev/docs/api/class-locator#locator-select-option)
now wait for the element to be [not
inert](https://playwright.dev/docs/actionability#not-inert). An action
on an element with the `inert` attribute, or inside such an element, now
times out if the element stays inert.

- A sharded run now fails with "No tests found" when no tests match
across all shards. Pass `--pass-with-no-tests` to allow this. An empty
shard still passes when other shards have tests.

- Cookie matching now follows RFC 6265. With a URL,
[browserContext.cookies()](https://playwright.dev/docs/api/class-browsercontext#browser-context-cookies)
and
[apiRequestContext.cookies()](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-cookies)
no longer return host-only cookies for subdomains or `Path=/api` cookies
for `/apiv2`, and a `Path=/foo/` cookie does not match `/foo`.
[APIRequestContext](https://playwright.dev/docs/api/class-apirequestcontext)
sends a cookie without a name as `Cookie: x` instead of `Cookie: =x`,
and stores `Set-Cookie: token` as a cookie without a name.

- Proxy credentials are no longer sent to websites. The credentials in
the
[`proxy`](https://playwright.dev/docs/api/class-browsertype#browser-type-launch-option-proxy)
option now answer only proxy challenges. To authenticate on a website,
use
[`httpCredentials`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-http-credentials).

- Text that the browser does not render, such as text that is not
assigned to a slot or text directly inside a closed `<details>`, is no
longer part of accessible names and aria snapshots. This can change the
results of
[page.getByRole()](https://playwright.dev/docs/api/class-page#page-get-by-role)
with a name,
[locator.ariaSnapshot()](https://playwright.dev/docs/api/class-locator#locator-aria-snapshot)
and
[expect(locator).toMatchAriaSnapshot()](https://playwright.dev/docs/api/class-locatorassertions#locator-assertions-to-match-aria-snapshot).

- String and `URLSearchParams` values of the `params` option in
[APIRequestContext](https://playwright.dev/docs/api/class-apirequestcontext)
requests are now appended to the query that the URL already has, instead
of replacing it.

- `.css`, `.less` and `.scss` imports in test files now load as empty
modules instead of being removed, so the imported file must exist.

- The blob reporter again deletes the content of its output directory
before it writes the report. Playwright 1.64 kept reports with other
names.

- Test locations of imported calls such as `test(` in CommonJS output
now point to the start of the callee, for example `a.spec.ts:3:7`
instead of `a.spec.ts:3:11`. This is the same as in ESM.

##### Announcements

- ⚠️ Playwright no longer tests on Node.js 20. Use Node.js 22, 24 or 26,
as listed in the [system
requirements](https://playwright.dev/docs/intro#system-requirements).
- 🐳 [Docker images](https://playwright.dev/docs/docker) now include
Node.js 26 instead of Node.js 24, and the latest patch of Chromium on
the same branch.

##### Browser Versions

- Chromium 158.0.8127.18
- Mozilla Firefox 159.0
- WebKit 27.2

This version was also tested against the following stable channels:

- Google Chrome 157
- Microsoft Edge 156

###
[`v1.64.1`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.64.1)

[Compare
Source](https://redirect.github.com/microsoft/playwright/compare/v1.64.0...v1.64.1)

##### Bug Fixes

-
[#&#8203;43247](https://redirect.github.com/microsoft/playwright/issues/43247)
\[Bug]: \_electron.launch intermittently loses a packaged app's first
window since 1.64.0
-
[#&#8203;43242](https://redirect.github.com/microsoft/playwright/issues/43242)
\[Regression]: Chromium 155+ aborts a preflighted cross-origin redirect
whenever any route is registered (net::ERR_ABORTED)

###
[`v1.64.0`](https://redirect.github.com/microsoft/playwright/releases/tag/v1.64.0)

[Compare
Source](https://redirect.github.com/microsoft/playwright/compare/v1.63.0...v1.64.0)

#### 🧰 WebMCP

New
[page.webmcp](https://playwright.dev/docs/api/class-page#page-webmcp)
and
[frame.webmcp](https://playwright.dev/docs/api/class-frame#frame-webmcp)
give access to the tools that a page registers through the experimental
[WebMCP](https://playwright.dev/docs/api/class-webmcp) browser API, so
you can test them like any other part of your app:

```js
const browser = await chromium.launch({ args: ['--enable-features=WebMCP'] });
const page = await browser.newPage();
await page.goto('https://example.com');

for (const tool of await page.webmcp.tools())
  console.log(tool.name, tool.description);

const result = await page.webmcp.callTool('add', { a: 2, b: 40 });
console.log(result.content[0].text); // "42"
```

[Playwright MCP](https://playwright.dev/docs/getting-started-mcp) also
supports WebMCP by default, with page-defined tools offered to the agent
as `webmcp_<tool>`. Pass `--no-webmcp` to opt out.

[`playwright-cli`](https://playwright.dev/docs/getting-started-cli)
exposes them as well:

```bash
playwright-cli webmcp-list
playwright-cli webmcp-call search_catalog --params '{"query":"cats"}'
```

#### 🎬 Better videos

Videos can now be recorded at a custom frame rate, and the decorations
for actions are styled with plain CSS:

```js
// playwright.config.ts
import { defineConfig } from '@playwright/test';

export default defineConfig({
  use: {
    video: {
      mode: 'on',
      size: { width: 1920, height: 1080 },
      fps: 60,
      show: {
        actions: {
          style: {
            point: 'width: 20px; height: 20px; border-radius: 50%; background: red',
            highlight: 'outline: 2px solid #&#8203;333; background: rgba(0, 128, 255, .15)',
            title: 'font-size: 16px',
          },
        },
      },
    },
  },
});
```

- New `fps` option in
[testOptions.video](https://playwright.dev/docs/api/class-testoptions#test-options-video),
[`recordVideo`](https://playwright.dev/docs/api/class-browser#browser-new-context-option-record-video)
and

[screencast.start()](https://playwright.dev/docs/api/class-screencast#screencast-start).
Firefox and WebKit currently capture up to 25 frames per second.
- New
[`style`](https://playwright.dev/docs/api/class-screencast#screencast-show-actions-option-style)
option takes CSS declarations for the `point` marker, the target
`highlight` and the action `title`. It replaces the `fontSize` option,
which is now deprecated.
- The cursor stays visible at the last action point, survives
navigations and travels along a natural, eased path.
- Videos are encoded with VP9 instead of VP8, which takes less CPU and
produces smaller files of the same or better
  quality.
- All video options are also available in [Playwright
MCP](https://playwright.dev/docs/getting-started-mcp) and
[`playwright-cli`](https://playwright.dev/docs/getting-started-cli).

#### 🎯 Test runner

- New
[testProject.default](https://playwright.dev/docs/api/class-testproject#test-project-default)
option keeps a project in the config without running it by default. You
can configure every browser you care about, and let a plain `npx
playwright test` run just your favourite one:

  ```js
  // playwright.config.ts
  import { defineConfig, devices } from '@playwright/test';

  export default defineConfig({
    projects: [
      { name: 'chromium', use: devices['Desktop Chrome'] },
{ name: 'firefox', use: devices['Desktop Firefox'], default: false },
{ name: 'webkit', use: devices['Desktop Safari'], default: false },
    ],
  });
  ```

  ```bash
  npx playwright test                     # runs chromium only
  npx playwright test --project=firefox   # runs firefox
npx playwright test --project="*" # runs all three, for example on CI
  ```

- New `--shuffle` command line option schedules tests in a random order,
which helps to find tests that accidentally depend on each other.

  ```bash
  npx playwright test --shuffle
  # Running 42 tests using 4 workers, shuffle seed 271828182
  # ...

  # Pass the seed to reproduce the same order.
  npx playwright test --shuffle 271828182
  ```

- New `lock` option in
[test.describe.configure()](https://playwright.dev/docs/api/class-test#test-describe-configure)
adds [test locks](https://playwright.dev/docs/test-parallel#test-locks)
to all tests in a file or a group:

  ```js
  test.describe.configure({ lock: 'user-settings' });
  ```

- New `type` option of `toHaveScreenshot` in
[testConfig.expect](https://playwright.dev/docs/api/class-testconfig#test-config-expect)
stores all unnamed screenshots as WebP:

  ```js
  // playwright.config.ts
  export default defineConfig({
    expect: {
      toHaveScreenshot: { type: 'webp' },
    },
  });
  ```

#### 🪆 Locator.within()

New
[locator.within()](https://playwright.dev/docs/api/class-locator#locator-within)
combines two locators that you already have, reading in the natural
order —
"this button, within that dialog":

```js
const saveButton = page.getByRole('button', { name: 'Save' });
const dialog = page.getByTestId('settings-dialog');

await saveButton.within(dialog).click();
```

Relative locators such as
[locator.nth()](https://playwright.dev/docs/api/class-locator#locator-nth)
or
[locator.first()](https://playwright.dev/docs/api/class-locator#locator-first)
are resolved inside each parent
separately, which makes column-like queries straightforward:

```js
// The third cell of every row, not the third cell in the table.
const thirdColumn = page.getByRole('cell').nth(2).within(page.getByRole('row'));
await expect(thirdColumn).toHaveText(['Apple', 'Banana', 'Cherry']);
```

#### New APIs

- New
[page.getByRef()](https://playwright.dev/docs/api/class-page#page-get-by-ref)
locates an element by its aria ref, such as `e2`, reported by
[page.ariaSnapshot()](https://playwright.dev/docs/api/class-page#page-aria-snapshot)
in the `'ai'` mode.
- New option
[`includeShadow`](https://playwright.dev/docs/api/class-page#page-content-option-include-shadow)
in
[page.content()](https://playwright.dev/docs/api/class-page#page-content)
and
[frame.content()](https://playwright.dev/docs/api/class-frame#frame-content)
serializes open shadow roots as [declarative shadow
DOM](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_shadow_DOM#declaratively_with_html).
- New option
[`signCount`](https://playwright.dev/docs/api/class-credentials#credentials-create-option-sign-count)
sets the initial signature counter of a virtual credential.
[credentials.create()](https://playwright.dev/docs/api/class-credentials#credentials-create)
and
[credentials.get()](https://playwright.dev/docs/api/class-credentials#credentials-get)
return the current `signCount`, and it is saved and restored together
with the credentials in the storage state.
- New
[fullConfig.filteredProjects](https://playwright.dev/docs/api/class-fullconfig#full-config-filtered-projects)
lists the projects that were selected to run after applying the
`--project` filter. It is available in global setup and reporters.
- New
[apiRequestContext.addCookies()](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-add-cookies),
[apiRequestContext.cookies()](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-cookies)
and
[apiRequestContext.clearCookies()](https://playwright.dev/docs/api/class-apirequestcontext#api-request-context-clear-cookies)
manage cookies of a request context, mirroring the
[BrowserContext](https://playwright.dev/docs/api/class-browsercontext)
methods:

  ```js
await request.addCookies([{ name: 'session-id', value: '42', url:
'https://example.com' }]);
  console.log(await request.cookies('https://example.com'));
  await request.clearCookies({ name: 'session-id' });
  ```

#### Breaking changes ⚠️

- `screen` property is now forwarded from the [device
descriptors](https://playwright.dev/docs/emulation#devices). If you use
`...devices['Desktop Chrome']` and alike, `window.screen` and media
queries now see the emulated screen size. You can opt-out by explicitly
setting `screen` to `undefined`:

  ```js
  // playwright.config.ts
  export default defineConfig({
    use: {
      ...devices['Desktop Chrome'],
      screen: undefined,
    },
  });
  ```

- JSX in your test files now follows your `tsconfig.json`. Playwright
compiles JSX in test files according to the `jsx`, `jsxFactory`,
`jsxFragmentFactory` and `jsxImportSource` [tsconfig
options](https://playwright.dev/docs/test-typescript#tsconfig-jsx-options),
and defaults to the automatic runtime from `react/jsx-runtime`.

- `--update-snapshots=missing` now passes the test run. Tests that only
create missing snapshots now pass in the `'missing'` mode of
[testConfig.updateSnapshots](https://playwright.dev/docs/api/class-testconfig#test-config-update-snapshots),
so that CI can generate new snapshots and verify the existing ones in a
single run. The mode used when the option is not specified is now

> [!IMPORTANT]
> ✂ PR body was truncated to here.


</details>

---

### Configuration

📅 **Schedule**: (in timezone Asia/Shanghai)

- Branch creation
  - "before 10am on monday"
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config
help](https://redirect.github.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/voidzero-dev/vite-plus).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4yMjAuMCIsInVwZGF0ZWRJblZlciI6IjQ0LjIyOC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: voidzero-guard[bot] <278573678+voidzero-guard[bot]@users.noreply.github.com>
Co-authored-by: MK <fengmk2@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant