chore: update vite-plus, switch to bun, drop deepmerge#1458
Conversation
There was a problem hiding this comment.
The code change is small and self-contained, but I noticed still reference while this PR deletes in favor of — worth confirming the action falls back to (or updating the workflow paths) before merging.
Extended reasoning...
Overview
This PR is dev-tooling-focused: bumps vite-plus 0.1.13 → 0.1.20, switches the package manager from pnpm to bun (replacing pnpm-lock.yaml with bun.lock), bumps Node 22.22.0 → 24.15.0 (renaming .nvmrc to .node-version), bumps TypeScript 5.9.3 → 6.0.3, vite-plugin-mkcert 1 → 2, and replaces the deepmerge npm package with a small in-repo deepMerge helper used by two test fixtures.
Security risks
None. Changes are confined to dev tooling and test helpers — no production runtime code is modified. The new deepMerge helper uses Object.getPrototypeOf(value) === Object.prototype to detect plain objects, which guards against prototype-pollution-style merging.
Level of scrutiny
Higher than a typical chore. Although the diff is mostly lockfile churn, it bundles several non-trivial changes: a TypeScript major-version bump (5 → 6), a Node major bump (22 → 24), a package-manager switch, and a major bump of vite-plugin-mkcert. Any one of these can surface subtle build/CI issues.
Other factors
The most concrete concern: .github/workflows/ci.yml (line 18), .github/workflows/cd.yml (line 46), and .github/workflows/create-release-pr.yml (line 23) all pass node-version-file: '.nvmrc' to voidzero-dev/setup-vp@v1. This PR deletes .nvmrc. If the action does not silently fall back to .node-version, CI/CD will break post-merge. This is the kind of thing that's safest verified by a human (either by trusting the action's behavior or updating the workflow paths in the same PR).
The deepMerge helper itself is correct for the two callers — plain-object recursion + array concat matches the prior deepmerge package's defaults. One minor behavior delta: explicit undefined values in the source are skipped (vs. deepmerge which would overwrite), but since both call-sites pass PartialDeep/RecursivePartial test data, this is unlikely to matter in practice.
The .nvmrc file was removed in #1458 when the project switched to bun, but cd.yml and create-release-pr.yml still reference it via node-version-file, causing setup-vp to fail with "node-version-file not found". Mirror the fix already applied in ci.yml.
Description
1 Line Summary
Upgrade vite-plus to 0.1.20, switch package manager from pnpm to bun, and replace the
deepmergepackage with a small in-repo helper.Details
vite-plusto 0.1.20 and updates related overrides + dev deps.pnpm-lock.yamltobun.lock;.nvmrcis replaced by.node-version.AGENTS.mdto match the current vite-plus guidance.deepMergehelper in__test__/support/helpers/general.tsand removes thedeepmergedependency. The helper covers the two existing callers (mockOSMinifiedNotificationPayload,TestContext.getFakeServerAppConfig) with the same plain-object recursion + array-concat behavior we were relying on.Systems Affected
Validation
Tests
Info
vp checkpasses (one pre-existing lint warning insrc/shared/config/version.tsunrelated to this change).vp testpasses the affected suites that exercise the helper changes (ServiceWorker.test.ts,app.test.ts, 40 tests).Checklist
Programming Checklist
Interfaces:
Functions:
Typescript:
Other:
Screenshots
Info
N/A — tooling and test-helper change only.
Checklist
Related Tickets
Made with Cursor