Repository navigation
chore(deps): upgrade Vue/Nuxt stack and workflows - #9
Conversation
Upgrade Nuxt to 4.6.3, Vue to 3.5.44, TypeScript to 6.0.3, and refresh the remaining tooling and GitHub Actions. Migrate pnpm settings for pnpm 12.15.0 and replace the Plausible tracking script with Rybbit. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
🦋 Changeset detectedLatest commit: d06dbf3 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
Caution Review failedThe pull request is closed. Walkthrough
Merge Risk:
|
Set privatePackages.version to true to preserve the Changesets v2 behavior of versioning the private website. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
🔵 Needs a closer look
It bundles many major-version upgrades (Nuxt 3→4, Vite 6→8, Vitest 2→5, TypeScript 5→6, Node 20→24, pnpm 9→12) whose runtime/build impact cannot be fully verified from the diff and warrants human validation of a green build.
No open issues 🎉
What changed in this PR
This PR performs a broad dependency and tooling modernization of the Vue/Nuxt monorepo: it upgrades the Nuxt/Vue stack (Nuxt 3→4, Vue 3.5.44, vue-tsc 3), bumps the Node/pnpm runtime (Node 24, pnpm 12), migrates pnpm config from .npmrc to pnpm-workspace.yaml, refreshes GitHub Actions to newer versions, updates the Changesets config/action to the v3/v2 line, and swaps the analytics provider from Plausible to Rybbit. It touches toolchain configuration and CI/release pipelines rather than application logic.
Changes:
- Upgrade Nuxt/Vue stack and dev dependencies; drop
future.compatibilityVersion(now the Nuxt 4 default). - Move runtime to Node 24 / pnpm 12 and relocate pnpm settings into
pnpm-workspace.yaml(allowBuilds,minimumReleaseAge,verifyDepsBeforeRun,publicHoistPattern). - Modernize CI/release workflows (
pnpm/setup@v3,checkout@v7,cspell-action@v9,changed-files@v47.0.6,changesets/action@v2.1.2) and replace Plausible with Rybbit.
| File | Description |
|---|---|
| turbo.json | Renames cache outputs to .formatcache/.lintcache, matching the format/lint script --cache-location paths. |
| pnpm-workspace.yaml | Adds pnpm 12 settings migrated from .npmrc plus minimumReleaseAge/allowBuilds/verifyDepsBeforeRun. |
| package.json | Bumps packageManager, engines, and root dev dependencies; pins TypeScript to 6.0.3. |
| apps/website/README.md | Updates "Nuxt 3" references to "Nuxt 4". |
| apps/website/package.json | Bumps vue, nuxt, and vue-tsc. |
| apps/website/nuxt.config.ts | Removes future.compatibilityVersion (default in Nuxt 4). |
| apps/website/app/app.vue | Replaces the Plausible script/init with a single Rybbit script tag. |
| .nvmrc | Switches the pinned Node version to 24.22.1. |
| .npmrc | Empties file (settings now live in pnpm-workspace.yaml). |
| .github/workflows/release.yml | Migrates to pnpm/setup@v3 and changesets/action@v2.1.2 input names. |
| .github/workflows/ci.yml | Migrates to pnpm/setup@v3, bumps action versions, narrows matrix to Node 24. |
| .changeset/config.json | Bumps config schema reference to v4. |
I validated the parts most likely to break:
- release.yml token removal is safe —
changesets/action@v2defaultsgithub-tokento${{ github.token }}and injectsGITHUB_TOKENinto both the version and publish script environments, so@changesets/changelog-githubstill works. Input renames (version-script/publish-script/commit-message/pr-title) match the v2action.yml. - Removed "Install deps" steps are safe —
pnpm/setup@v3runspnpm installautomatically (installdefaults totrue;require-lockfile: trueuses--frozen-lockfile) and reads the pnpm version frompackageManager. - pnpm-workspace.yaml keys are all valid for pnpm 12 (
allowBuildsmap form,verifyDepsBeforeRun: false, etc.). - Rybbit migration is complete (no leftover Plausible references outside the historical CHANGELOG), and cspell's default
Urlsignore pattern means the new domain won't fail CSpell.
No objective issues were found in the diff.
Review effort: Balanced
Summary
3.21.11→4.6.3, Vue3.5.44, andvue-tsc3.3.13future.compatibilityVersionand adapt to Unhead v312.15.0; migrate pnpm settings topnpm-workspace.yaml@alanlu-devand non-MasterCSS dependencies; TypeScript pinned to6.0.3checkout@v7,pnpm/setup@v3,cspell-action@v9,changed-files@v47.0.6,changesets/action@v2.1.2)Verification
pnpm install --frozen-lockfilepnpm buildpnpm typecheckpnpm lintpnpm formatpnpm lint:cspellpnpm test(currently no test tasks)/and/aboutreturn 200; Rybbit script is renderedactionlintpassesNotes
2.0.0-rc.47minimumReleaseAge: 0is required to install the freshly released Nuxt 4.6.3 with pnpm 12Summary by CodeRabbit