Skip to content

Commit e2fae6b

Browse files
feat(deps): upgrade upstream dependencies (#2519)
This PR upgrades upstream dependencies and adds two projects to ecosystem CI. Nuxt DevTools uses the `@vitejs/devtools` version from `packages/core/package.json`. Its test runs the build, type check, and unit tests on Linux and Windows. The fixture trusts the lockfile that the same CI job creates for the local Vite+ registry. The Tiptap test runs on Ubuntu. It runs `vp run build && vp run build:demos`, `vp run lint`, and `vp run test:unit`. The fixture keeps Tiptap's upstream lint behavior after `vp migrate`. The ecosystem workflow now uses the name `Ecosystem CI`. The dependency upgrade workflow preserves the baseline PR details. It adds verified release and commit links to the `Dependency updates` table. - This PR upgrades the upstream dependencies. - It updates the pinned `vite` commit to `v8.2.2` (`de1111a`) and `@vitejs/devtools` to `0.5.1`. - `rolldown` stays on `v1.2.5` (`84c904b`). Vitest, tsdown, Oxlint, Oxfmt, and the Oxc packages are unchanged. - The required changes widen the `@vitejs/devtools` peer range and update the recorded bundled Vite version. They also update one PTY snapshot. ## Dependency updates | Package | From | To | | --- | --- | --- | | `vite` | `v8.2.1` ([`4216158`](vitejs/vite@4216158)) | [`v8.2.2`](https://github.com/vitejs/vite/releases/tag/v8.2.2) ([`de1111a`](vitejs/vite@de1111a)) | | `@vitejs/devtools` | `0.5.0` | [`0.5.1`](https://github.com/vitejs/devtools/releases/tag/v0.5.1) | <details><summary>Unchanged dependencies</summary> - `rolldown`: `v1.2.5` ([`84c904b`](rolldown/rolldown@84c904b)) - `vitest`: `4.1.11` - `@vitest/browser`: `4.1.11` - `@vitest/browser-playwright`: `4.1.11` - `@vitest/browser-preview`: `4.1.11` - `@vitest/browser-webdriverio`: `4.1.11` - `@vitest/expect`: `4.1.11` - `@vitest/mocker`: `4.1.11` - `@vitest/pretty-format`: `4.1.11` - `@vitest/runner`: `4.1.11` - `@vitest/snapshot`: `4.1.11` - `@vitest/spy`: `4.1.11` - `@vitest/utils`: `4.1.11` - `tsdown`: `0.22.14` - `@tsdown/css`: `0.22.14` - `@tsdown/exe`: `0.22.14` - `lightningcss`: `^1.33.0` - `@oxc-node/cli`: `0.1.0` - `@oxc-node/core`: `0.1.0` - `oxfmt`: `0.64.0` - `oxlint`: `1.79.0` - `oxlint-tsgolint`: `7.0.2001` - `@oxc-project/runtime`: `0.146.0` - `@oxc-project/types`: `0.146.0` - `oxc-minify`: `0.146.0` - `oxc-parser`: `0.146.0` - `oxc-transform`: `0.146.0` - `VITEST_VERSION` constant: `4.1.11` - README Vitest pins: `4.1.11` </details> ## Code changes - `packages/core/package.json` updates the `@vitejs/devtools` dependency from `^0.5.0` to `^0.5.1`. - The same file updates the peer range from `^0.4.0` to `^0.4.0 || ^0.5.0`. - The same file updates `bundledVersions.vite` from `8.2.1` to `8.2.2`. - `packages/tools/.upstream-versions.json` updates the pinned Vite hash to `de1111ab0be00879b404e7ed3b2a80e264edddc1`. - `crates/vp_cli_snapshots/tests/cli_snapshots/fixtures/create_approve_builds_bun/snapshots/create_approve_builds_bun.md` updates the recorded `bun pm trust <version> (...)` build hash. - `pnpm-lock.yaml` refreshes the lockfile and its transitive dependencies. - `.github/workflows/e2e-test.yml` adds the Nuxt DevTools and Tiptap tests. It also renames the workflow to `Ecosystem CI`. - `ecosystem-ci/repo.json` adds the pinned Nuxt DevTools and Tiptap repositories. - `ecosystem-ci/patch-project.ts` aligns the DevTools version and trusts the Nuxt lockfile. It also preserves Tiptap's lint behavior. - `.github/workflows/upgrade-deps.yml` preserves baseline PR details. It adds verified links to the dependency table. --------- Co-authored-by: voidzero-guard[bot] <278573678+voidzero-guard[bot]@users.noreply.github.com> Co-authored-by: MK <fengmk2@gmail.com>
1 parent 57b6107 commit e2fae6b

7 files changed

Lines changed: 1076 additions & 683 deletions

File tree

.github/workflows/e2e-test.yml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: E2E Test
1+
name: Ecosystem CI
22

33
permissions: {}
44

@@ -397,6 +397,18 @@ jobs:
397397
# submit a fix PR to varletjs/varlet after the next vite-plus release.
398398
vp run lint || true
399399
vp run test:coverage
400+
- name: nuxt-devtools
401+
node-version: 24
402+
command: |
403+
vp run build
404+
vp run typecheck
405+
vp run test:unit
406+
- name: tiptap
407+
node-version: 24
408+
command: |
409+
vp run build && vp run build:demos
410+
vp run lint
411+
vp run test:unit
400412
exclude:
401413
# frm-stack uses Docker (testcontainers) which doesn't work the same way on Windows
402414
- os: namespace-profile-windows-4c-8g
@@ -422,6 +434,10 @@ jobs:
422434
- os: namespace-profile-windows-4c-8g
423435
project:
424436
name: varlet
437+
# tiptap upstream CI is ubuntu-only
438+
- os: namespace-profile-windows-4c-8g
439+
project:
440+
name: tiptap
425441

426442
steps:
427443
- uses: taiki-e/checkout-action@7d1e50e93dc4fb3bba58f85018fadf77898aee8b # v1.4.2

.github/workflows/upgrade-deps.yml

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,8 @@ jobs:
237237
- Version changes (old -> new) in JSON: `${{ env.UPGRADE_DEPS_META_DIR }}/versions.json`
238238
- Baseline commit message: `${{ env.UPGRADE_DEPS_META_DIR }}/commit-message.txt`
239239
- Baseline PR body: `${{ env.UPGRADE_DEPS_META_DIR }}/pr-body.md`
240+
- Read the baseline PR body before you write. Preserve each factual detail unless
241+
`git diff` shows that the detail is no longer correct.
240242
- The working directory is the project root; all upgraded files are staged or modified.
241243
Use `git status` and `git diff` (including `git diff --stat` and focused per-file diffs)
242244
to discover what actually changed beyond the raw version bumps.
@@ -261,13 +263,20 @@ jobs:
261263
add a trailing `Code changes:` block listing each change with a file path.
262264
263265
### PR body format (Markdown)
264-
Use these sections in order:
265-
1. `## Summary` — 2-4 bullets describing what this PR does at a high level,
266-
naming the most impactful upgrades (e.g., rolldown tag bump, vite bump,
267-
vitest/tsdown bumps) and any required code adjustments.
266+
Use this content in order:
267+
1. Add 2-4 overview bullets without a `Summary` heading. Describe the most impactful
268+
upgrades and all required code adjustments.
268269
2. `## Dependency updates` — a Markdown table with columns `Package | From | To`.
269-
Use short 7-char SHAs for rolldown/vite hashes, and include the tag in the `To`
270-
column when available. Omit packages whose old and new values are equal.
270+
Link each target version to its changelog when a verified link is available.
271+
Format the target version as inline code inside the Markdown link.
272+
- Prefer an exact target-version release page in the official repository.
273+
- If no release page exists, link to the target version in the official changelog.
274+
- Use `gh api`, npm package metadata, and upstream repository files to verify links.
275+
- Do not guess a URL. Keep the target version unlinked if you cannot verify a link.
276+
Include the version and a short 7-char SHA in both `From` and `To` for `rolldown`
277+
and `vite`. Link each SHA label to the full commit in the official repository.
278+
Omit packages whose old and new values are equal.
279+
Keep the baseline list of unchanged dependencies after the table.
271280
3. `## Code changes` — bullet list of the actual non-version edits, each naming
272281
the file(s) touched. If the only changes are version bumps + lockfile + generated
273282
bindings, write `- None beyond version bumps, lockfile, and formatter output.`.

ecosystem-ci/patch-project.ts

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { appendFile, readFile, writeFile } from 'node:fs/promises';
44
import { join } from 'node:path';
55

66
import { VITEST_VERSION } from '../packages/cli/src/utils/constants.ts';
7+
import vitePlusCorePkg from '../packages/core/package.json' with { type: 'json' };
78
import { ecosystemCiDir, tgzDir, vitePlusTgzVersion } from './paths.ts';
89
import repos from './repo.json' with { type: 'json' };
910

@@ -212,6 +213,37 @@ if (project === 'dify') {
212213
await writeFile(workspacePath, patched, 'utf-8');
213214
}
214215

216+
if (project === 'nuxt-devtools') {
217+
// The fixture's lockfile is generated earlier in this trusted CI job against
218+
// the local registry. Trust that lockfile when package scripts invoke pnpm
219+
// again: the registry's unpublished 0.0.0 tarballs do not have npm trust
220+
// metadata, so a second supply-chain verification rejects them.
221+
//
222+
// Nuxt DevTools uses one YAML anchor for its Vite DevTools package family.
223+
// Align that source with vite-plus-core so pnpm resolves the core package,
224+
// kit, and optional integration peers as one compatible release family.
225+
const workspacePath = join(repoRoot, 'pnpm-workspace.yaml');
226+
const workspace = await readFile(workspacePath, 'utf-8');
227+
const trustPolicy = 'trustPolicy: no-downgrade';
228+
if (!workspace.includes(trustPolicy)) {
229+
throw new Error(`nuxt-devtools patch: \`${trustPolicy}\` not found in ${workspacePath}`);
230+
}
231+
const viteDevtoolsVersionSource = /^([ \t]*vite-devtools:[ \t]+&vite-devtools[ \t]+)\S+[ \t]*$/m;
232+
if (!viteDevtoolsVersionSource.test(workspace)) {
233+
throw new Error(
234+
`nuxt-devtools patch: Vite DevTools version source not found in ${workspacePath}`,
235+
);
236+
}
237+
const viteDevtoolsVersion = vitePlusCorePkg.devDependencies['@vitejs/devtools'];
238+
const patched = workspace
239+
.replace(trustPolicy, `${trustPolicy}\ntrustLockfile: true`)
240+
.replace(
241+
viteDevtoolsVersionSource,
242+
(_line, prefix: string) => `${prefix}${viteDevtoolsVersion}`,
243+
);
244+
await writeFile(workspacePath, patched, 'utf-8');
245+
}
246+
215247
// Projects that already use vite-plus need VP_FORCE_MIGRATE=1 so
216248
// vp migrate runs full dependency rewriting instead of skipping.
217249
const forceFreshMigration = 'forceFreshMigration' in repoConfig && repoConfig.forceFreshMigration;
@@ -276,6 +308,22 @@ execSync(`${cli} migrate --no-agent --no-interactive`, {
276308
env: migrateEnv,
277309
});
278310

311+
if (project === 'tiptap') {
312+
// Keep Tiptap's upstream lint semantics. Migration enables type-aware type
313+
// checking, which reports TypeScript diagnostics that upstream CI does not check.
314+
const viteConfigPath = join(repoRoot, 'vite.config.mts');
315+
const viteConfig = await readFile(viteConfigPath, 'utf-8');
316+
const typeAwareOptions =
317+
/,\s*(?:"options"|options):\s*\{\s*(?:"typeAware"|typeAware):\s*true,\s*(?:"typeCheck"|typeCheck):\s*true\s*\}/;
318+
const patched = viteConfig.replace(typeAwareOptions, '');
319+
if (patched === viteConfig) {
320+
throw new Error(
321+
`tiptap patch: migrated type-aware lint options not found in ${viteConfigPath}`,
322+
);
323+
}
324+
await writeFile(viteConfigPath, patched, 'utf-8');
325+
}
326+
279327
// Install through the local registry. `vp migrate` already pinned
280328
// `vite-plus@<version>` in package.json exactly like a real migration, so no
281329
// manual package.json rewrite is needed.

ecosystem-ci/repo.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,5 +137,16 @@
137137
"branch": "dev",
138138
"hash": "83f6c6a418ab9319e07d719d86d4fa952f99e266",
139139
"forceFreshMigration": true
140+
},
141+
"nuxt-devtools": {
142+
"repository": "https://github.com/nuxt/devtools.git",
143+
"branch": "main",
144+
"hash": "a24195182241ddcce07f9d9e7972608eafbc93fb"
145+
},
146+
"tiptap": {
147+
"repository": "https://github.com/ueberdosis/tiptap.git",
148+
"branch": "main",
149+
"hash": "f434577e6bb2010b321653cb132a57bda18764fa",
150+
"forceFreshMigration": true
140151
}
141152
}

packages/core/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@
128128
"@oxc-node/cli": "catalog:",
129129
"@tsdown/css": "catalog:",
130130
"@tsdown/exe": "catalog:",
131-
"@vitejs/devtools": "^0.5.0",
131+
"@vitejs/devtools": "^0.5.1",
132132
"es-module-lexer": "^1.7.0",
133133
"hookable": "^6.0.1",
134134
"magic-string": "^0.30.21",
@@ -150,7 +150,7 @@
150150
"peerDependencies": {
151151
"@arethetypeswrong/core": "^0.18.1",
152152
"@types/node": "^20.19.0 || >=22.12.0",
153-
"@vitejs/devtools": "^0.4.0",
153+
"@vitejs/devtools": "^0.4.0 || ^0.5.0",
154154
"esbuild": "^0.27.0 || ^0.28.0",
155155
"jiti": ">=1.21.0",
156156
"less": "^4.0.0",
@@ -226,7 +226,7 @@
226226
"node": "^20.19.0 || ^22.18.0 || >=24.11.0"
227227
},
228228
"bundledVersions": {
229-
"vite": "8.2.1",
229+
"vite": "8.2.2",
230230
"rolldown": "1.2.5",
231231
"tsdown": "0.22.14"
232232
}

packages/tools/.upstream-versions.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,6 @@
77
"vite": {
88
"repo": "https://github.com/vitejs/vite.git",
99
"branch": "main",
10-
"hash": "421615865dad3ed39137d17281814fc78a41246c"
10+
"hash": "de1111ab0be00879b404e7ed3b2a80e264edddc1"
1111
}
1212
}

0 commit comments

Comments
 (0)