Skip to content

build: bump vite-plus to 1.5.0 with vitest 5.1.0 and the dev-dependency group - #177

Merged
viztor merged 2 commits into
mainfrom
claude/vigilant-mendel-bctz9n-toolchain
Nov 15, 2026
Merged

viztor merged 2 commits into
mainfrom
claude/vigilant-mendel-bctz9n-toolchain

Conversation

@viztor

@viztor viztor commented Nov 15, 2026

Copy link
Copy Markdown
Owner

This PR combines the two Dependabot PRs #165 and #166. Neither passes CI on its own: each one's failure is fixed by the other's changes.

What moves

Package From To
vite-plus (catalog) 1.4.0 1.5.0
vite → @voidzero-dev/vite-plus-core (catalog; the vite@* override follows it) 1.4.0 1.5.0
vitest 5.0.5 5.1.0
@vitest/coverage-v8 5.0.5 5.1.0
es-module-lexer 2.3.2 3.0.4
jsdom ^30.1.3 (30.1.3) ^31.0.0 (31.0.1)
semver ^7.8.5 ^7.8.6
ultracite ^8.1.0 (8.1.0) ^8.1.1 (8.2.0)

The bump also moves these: oxlint 1.89 → 1.91, oxfmt 0.74 → 0.76, oxlint-tsgolint 7.0.2004 → 7.0.2005 and undici 8.12.2 → 8.12.4.

Kept as recorded

  • @earendil-works/pi-ai stays at 1.5.2, with one copy in each lockfile. Host packages are unchanged: dsh 0.2.2-alpha.3 on alpha and 0.2.2-rc.2 on rc.
  • channels/rc/pnpm-lock.yaml is relocked with scripts/use-channel.ts rc --relock. It matches the root lockfile on every non-host package, so harness-channel and host-versions pass.

Code changes

  • scripts/freshness-scope.ts: es-module-lexer 3 drops initSync, but its parse still runs synchronously in Node. A small loadedSpecifier reader handles 3.x's import records:

    • static imports and re-exports give their specifier;
    • import.meta gives none;
    • a template-literal import(), which 3.x now reports as a glob, is skipped, as 2.x did.

    A review compared the old reader on 2.3.2 with the new one on 3.0.4, over 15 edge forms and all 237 source files in the tree, and found no differences.

  • test/freshness-scope.test.ts: one new case covers star re-exports, literal, template and computed import(), and import.meta. It fails if the glob check is removed.

  • pnpm-workspace.yaml: the release-age exemption for ultracite@8.1.0 is dropped, because neither lockfile installs that version any more.

oxfmt 0.76 reformatted nothing. oxlint 1.91 reports the same 12 warnings as main, file for file, and no finding from the new no-unsafe-enum-assignment rule. No coverage floor, warning allowance or existing test changed.

Verification (Node 26 unless stated)

Step Result
pnpm install --frozen-lockfile passes
vp check 0 errors, 12 warnings (same as main)
unit suite, alpha 127 files; 2033 passed, 1 skipped (also shuffled with seed 42)
mock suite 7 files, 83 passed
rc channel, unit and mock 2033 passed, 1 skipped; 83 passed; no residue after switching back
coverage every floor met (98.36 / 95.92 / 98.65 / 98.36)
build and scripts/check.ts check passed
Node 24, shuffled with seed 7 2033 passed, 1 skipped
binary e2e, alpha npm and rc npm cells 15 passed, 2 HOST_LIMITATION skips each

Review: two rounds. Round 1 upheld one low finding (the stale ultracite exemption) and refuted one; it is fixed. Round 2 found nothing.

Once this merges, Dependabot should close #165 and #166 as superseded.


Generated by Claude Code

…cy group

One combined bump in place of Dependabot's two, which could not land apart:
vite-plus 1.5.0 bundles vitest 5.1.0 and refuses @vitest/coverage-v8 5.0.5,
and ultracite 8.1.1 needs the oxlint (>=1.90) that only vite-plus 1.5.0 ships.

Versions moved:
- vite-plus 1.4.0 -> 1.5.0, and the catalog's vite
  (npm:@voidzero-dev/vite-plus-core) 1.4.0 -> 1.5.0. The vite@* override is
  "catalog:", so it follows the catalog to the same core version; Dependabot's
  bump left the catalog's vite at 1.4.0.
- vitest 5.0.5 -> 5.1.0, @vitest/coverage-v8 5.0.5 -> 5.1.0 (pinned)
- es-module-lexer 2.3.2 -> 3.0.4 (pinned)
- jsdom ^30.1.3 -> ^31.0.0 (resolves 31.0.1)
- semver ^7.8.5 -> ^7.8.6 (resolves 7.8.6)
- ultracite ^8.1.0 -> ^8.1.1 (resolves 8.2.0, the newest the range admits)
- carried by the above: oxlint 1.89.0 -> 1.91.0, oxfmt 0.74.0 -> 0.76.0,
  oxlint-tsgolint 7.0.2004 -> 7.0.2005, undici 8.12.2 -> 8.12.4 (jsdom 31)

Both lockfiles relocked: the root (alpha) with `pnpm install`, and the rc
channel's with `scripts/use-channel.ts rc --relock`, which Dependabot cannot
run and test/harness-channel.test.ts holds to the root's non-host packages.

pi held: the root importer's @earendil-works/pi-ai stays 1.5.2 (one copy, with
pi-schema and pi-telemetry at 1.5.2) in both lockfiles, as
test/support/host-versions.ts records; the relock did not move it, unlike
Dependabot's, which dropped it to 1.5.0 beside a second copy.

es-module-lexer 3 port (scripts/freshness-scope.ts): 3.x drops initSync, and
its `parse` compiles the lexer synchronously in Node when no init() has run,
so importSpecifiers calls it directly and stays synchronous. The full build's
records replace v2's terse `n`: a static import or re-export reads its
`specifier`, `import.meta` (specifier null) names none, and a dynamic
import() whose argument is a template is now reported as a glob
(`./locales/*.ts`) where v2 answered undefined, so a glob is skipped like
any other non-literal argument, keeping v2's behaviour. A new case in
test/freshness-scope.test.ts performs each form (star re-exports, a literal,
a template and a computed import(), import.meta); dropping the glob check
fails it.

Lint and format: oxfmt 0.76 rewrites nothing; oxlint 1.91 reports the same 12
warnings as main and no new rule finding (no typescript/no-unsafe-enum-assignment
site in the tree). The one error was the new test's own `${name}` source text
(no-template-curly-in-string), disabled for that line with the reason: the
placeholder is input for the lexer, not one to interpolate.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0141fKp5k6hiaJcP5ovhGtSD
The previous commit moved ultracite to ^8.1.1, and both lockfiles now
resolve 8.2.0, which installed without an exemption. No declared range
admits 8.1.0 any more, so its minimumReleaseAgeExclude entry exempts
nothing reachable. The list pins exact versions so each bump makes its
own case; this bump needed none, so the line goes with no replacement.

Both the root and the rc channel lockfile still install with
--frozen-lockfile.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0141fKp5k6hiaJcP5ovhGtSD
@viztor
viztor merged commit 50f15c6 into main Nov 15, 2026
9 checks passed
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.

2 participants