Skip to content

chore: upgrade to Vite 8, Vitest 5, vue-tsc 3 and @crxjs 3 - #564

Merged
sebastienfontaine merged 1 commit into
masterfrom
chore/vite-8
Oct 14, 2026
Merged

sebastienfontaine merged 1 commit into
masterfrom
chore/vite-8

Conversation

@sebastienfontaine

Copy link
Copy Markdown
Contributor

Stacked on #563. GitHub will retarget it once the PRs below it are merged.

Changes

  • Vite 7 → 8 (Rolldown bundler), @vitejs/plugin-vue 6.0.10, @crxjs/vite-plugin 2 → 3 (ESM only; the project is already ESM).
  • Vitest 4 → 5 with @vitest/ui and @vitest/coverage-v8 5, jsdom 27 → 30.
  • vue-tsc 2 → 3.
  • vite.config.ts: import … with { type: 'json' } instead of the removed assert syntax.

Code changes

  • Tests: document, location and history are now getter-only on the jsdom window, so assigning them throws. The 3 affected test files (IconService, TitleService, UrlChangeDetector) now use vi.stubGlobal() / vi.unstubAllGlobals().
  • RuleForm.vue: removed the customIconInput template ref, which was never read (vue-tsc 3 now flags it).

Not included

@types/chrome 0.0.268 → 0.3.x was tried and reverted: it types chrome.storage results as {} and drops chrome.tabs.TabChangeInfo, which needs typing every storage access. Better as its own PR.

Tested

  • ESLint, Prettier, vue-tsc, 226 tests (with coverage) and npm run build pass locally.
  • npm run dev starts and generates dist/ with CRXJS.
  • Worth loading the built extension once by hand, since the bundler changed (Rollup → Rolldown).

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Coverage Report

Status Category Percentage Covered / Total
🔵 Lines 57.01% 593 / 1040
🔵 Statements 57.48% 626 / 1089
🔵 Functions 64.02% 121 / 189
🔵 Branches 52.71% 291 / 552
File CoverageNo changed files found.
Generated in workflow #471 for commit 31547a1 by the Vitest Coverage Report Action

@sebastienfontaine
sebastienfontaine changed the base branch from chore/eslint-10 to master October 14, 2026 18:12
- vite 8, @vitejs/plugin-vue 6.0.10, @crxjs/vite-plugin 3
- vitest, @vitest/ui, @vitest/coverage-v8 5; jsdom 30
- vue-tsc 3
- vite.config.ts: import attributes 'with' instead of 'assert'
- tests: mock document/location/history with vi.stubGlobal, as these
  window properties are getter-only in the new jsdom environment
- RuleForm: remove unused customIconInput template ref (flagged by vue-tsc 3)
@github-actions

Copy link
Copy Markdown

📦 Extension Build Ready!

Version: 1.1.6

📥 Download Extension (tabee.zip)

Installation

  1. Download and extract the zip file
  2. Open Chrome → chrome://extensions/
  3. Enable "Developer mode" (top right)
  4. Click "Load unpacked" → Select the extracted folder

Status

  • ✅ All tests passed
  • ✅ Build successful
  • ✅ Ready for testing

🤖 Auto-generated by GitHub Actions

@sebastienfontaine
sebastienfontaine merged commit 2422e96 into master Oct 14, 2026
7 checks passed
@sebastienfontaine
sebastienfontaine deleted the chore/vite-8 branch October 14, 2026 18:23
@sebastienfontaine sebastienfontaine mentioned this pull request Oct 14, 2026
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.

1 participant