Skip to content

build(deps-dev): bump vite to 8 and typescript to 6 in /ui - #140

Merged
pmaxhogan merged 1 commit into
mainfrom
build/vite8-ts6
Jul 20, 2026
Merged

pmaxhogan merged 1 commit into
mainfrom
build/vite8-ts6

Conversation

@pmaxhogan

Copy link
Copy Markdown
Owner

What broke and how it was fixed

vite 6.0.0 -> 8.1.5 (ui/package.json). Build/lint/tests all pass unchanged with the existing vitest 2.1.9 + @vitejs/plugin-vue 6.0.8 (both already declare vite 8 in their peer ranges - no peer-dep incompatibility, contrary to my first guess). The only fallout was a ~0.4pp UI coverage dip: vite 8's different bundling/sourcemap output shifts which branches land as "uncovered" in a few components (AccountList.vue, SourceTable.vue, Activity.vue). Closed the gap - and then some - by adding src/__tests__/app-shell.test.ts, a smoke test for App.vue (the app shell), which had zero mount coverage before this (0% -> 98.5% on that file alone). Net UI line coverage: 88.58% -> 89.36% locally (CI's cached main baseline is 88.51%).

vitest 4.1.x is the first line that officially declares vite-8 support, and I tried it - but it switches @vitest/coverage-v8 to AST-aware remapping, which reports substantially lower (~84%) coverage on this codebase. That's not a real regression in test quality, just a stricter/more-accurate measurement, but it can't clear the CI coverage-regression gate without a baseline reset (which I can't do without merging). So the vitest bump is deliberately deferred - left a comment in vitest.config.ts explaining why, so it isn't "helpfully" redone later and silently breaks the gate.

typescript 5.6.0 -> 6.0.3 (ui/package.json). The only break was tsconfig.json's baseUrl, deprecated in TS 6 (TS5101, removed in TS 7). Removed it and converted the "@/*" path mapping to the explicit relative form ("./src/*") - TypeScript resolves paths relative to the tsconfig file when there's no baseUrl, so behavior is unchanged. vue-tsc 2.2.12 (peer range >=5.0.0) needed no bump.

telemetry-worker already pins typescript ^6.0.3 (an unrelated recent merge) and has no vite dependency at all - left untouched.

Test / gate results (all local)

  • pnpm -C ui lint - 0 errors (13 pre-existing i18n key warnings, unrelated)
  • pnpm -C ui run build (vue-tsc --noEmit && vite build) - passes
  • pnpm -C ui run test:unit - 271/271 tests passing (29 files)
  • pnpm -C ui run test:coverage - 89.36% lines (up from 88.58% on main), deterministic across 3 runs
  • cargo check -p driven-app - passes

Supersedes #121 and #122.

🤖 Generated with Claude Code

Lands the two dependabot majors that couldn't merge as-is:

- vite 6.0.0 -> 8.1.5. Build/lint/tests all pass unchanged with the
  existing vitest 2.1.9 + @vitejs/plugin-vue 6.0.8 (both already declare
  vite 8 in their peer ranges). The only fallout was a ~0.4pp UI coverage
  dip from vite 8's different bundling/sourcemap output shifting which
  branches land as "uncovered" in a few components (AccountList.vue,
  SourceTable.vue, Activity.vue). Closed the gap - and then some - with a
  new App.vue shell smoke test (0% -> 98.5% on that file), since the app
  shell had no mount coverage at all. Net UI line coverage: 88.58% ->
  89.36% locally (CI's cached main baseline is 88.51%).

  vitest 4.1.x is the first line that declares official vite-8 support,
  but it switches @vitest/coverage-v8 to AST-aware remapping, which
  reports substantially LOWER (~84%) coverage on this codebase - not a
  real regression, just a stricter measurement that can't clear the
  regression gate without a baseline reset. Deferring that bump
  deliberately; left a comment in vitest.config.ts explaining why so it
  isn't "helpfully" redone later.

- typescript 5.6.0 -> 6.0.3. The only break was tsconfig.json's baseUrl,
  deprecated in TS 6 (TS5101, removed in TS 7). Removed it and converted
  the "@/*" path mapping to the explicit relative form ("./src/*"), which
  TypeScript resolves relative to the tsconfig file when there's no
  baseUrl - build/typecheck output is unchanged. vue-tsc 2.2.12 (peer
  range >=5.0.0) needed no bump.

telemetry-worker already pins typescript ^6.0.3 (unrelated recent merge)
and has no vite dependency - left untouched.

Verified locally: pnpm -C ui lint (0 errors), pnpm -C ui run build
(vue-tsc + vite build), pnpm -C ui test:unit (271/271 passing),
pnpm -C ui run test:coverage (89.36% lines, up from 88.58%), and
cargo check -p driven-app.

Supersedes #121 and #122.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown
Contributor

Coverage

Area main this PR delta
Rust (lib crates) 78.70% 78.70% +0.00 (OK)
UI (vue/ts) 88.58% 89.36% +0.78 (OK)

Gate: passed - no coverage regression (epsilon 0.1 pp).

@pmaxhogan
pmaxhogan merged commit fa9d622 into main Jul 20, 2026
18 checks passed
@pmaxhogan
pmaxhogan deleted the build/vite8-ts6 branch July 20, 2026 18:14
@github-project-automation github-project-automation Bot moved this from Todo to Done in Driven Jul 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant