From a80aef26ecdfcba2ff2eecbccb1e0dbb0af2ff4f Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Mar 2026 03:02:10 +0000 Subject: [PATCH 1/2] Initial plan From 29ed5c3134c19ef3a0a395e6085de48ac44b20a1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 15 Mar 2026 03:08:32 +0000 Subject: [PATCH 2/2] Fix Vite chunk output to ensure content script isolation Build the content script as a separate single-entry Vite config so all imports are always bundled inline, preventing silent runtime breakage if shared imports are added to selection-overlay.ts in future refactors. Co-authored-by: numbers-official <181934381+numbers-official@users.noreply.github.com> --- package-lock.json | 10 ++-------- package.json | 2 +- vite.config.ts | 3 +-- vite.content.config.ts | 32 ++++++++++++++++++++++++++++++++ 4 files changed, 36 insertions(+), 11 deletions(-) create mode 100644 vite.content.config.ts diff --git a/package-lock.json b/package-lock.json index 9c91664..26a975e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "proofsnap-extension", - "version": "1.1.1", + "version": "1.1.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "proofsnap-extension", - "version": "1.1.1", + "version": "1.1.4", "dependencies": { "react": "^19.0.0", "react-dom": "^19.0.0" @@ -49,7 +49,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.4.tgz", "integrity": "sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==", "dev": true, - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", @@ -1156,7 +1155,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.2.tgz", "integrity": "sha512-6mDvHUFSjyT2B2yeNx2nUgMxh9LtOWvkhIU3uePn2I2oyNymUAX1NIsdgviM4CH+JSrp2D2hsMvJOkxY+0wNRA==", "dev": true, - "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -1267,7 +1265,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.8.9", "caniuse-lite": "^1.0.30001746", @@ -1709,7 +1706,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, - "peer": true, "engines": { "node": ">=12" }, @@ -1769,7 +1765,6 @@ "version": "19.2.0", "resolved": "https://registry.npmjs.org/react/-/react-19.2.0.tgz", "integrity": "sha512-tmbWg6W31tQLeB5cdIBOicJDJRR2KzXsV7uSK9iNfLWQ5bIZfxuPEHp7M8wiHyHnn0DD1i7w3Zmin0FtkrwoCQ==", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -2000,7 +1995,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.6.tgz", "integrity": "sha512-0msEVHJEScQbhkbVTb/4iHZdJ6SXp/AvxL2sjwYQFfBqleHtnCqv1J3sa9zbWz/6kW1m9Tfzn92vW+kZ1WV6QA==", "dev": true, - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", diff --git a/package.json b/package.json index 2a312f5..6ebe6ae 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "type": "module", "scripts": { "dev": "vite build --watch --mode development", - "build": "tsc && vite build", + "build": "tsc && vite build && vite build --config vite.content.config.ts", "preview": "vite preview", "type-check": "tsc --noEmit", "generate-manifest": "node scripts/generate-manifest.js" diff --git a/vite.config.ts b/vite.config.ts index b5839c4..279ae10 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -41,8 +41,7 @@ export default defineConfig({ options: resolve(__dirname, 'src/options/options.html'), background: resolve(__dirname, 'src/background/service-worker.ts'), offscreen: resolve(__dirname, 'src/offscreen/offscreen.ts'), - share: resolve(__dirname, 'src/share/share.tsx'), - 'content/selection-overlay': resolve(__dirname, 'src/content/selection-overlay.ts') + share: resolve(__dirname, 'src/share/share.tsx') }, output: { entryFileNames: '[name].js', diff --git a/vite.content.config.ts b/vite.content.config.ts new file mode 100644 index 0000000..eaccb52 --- /dev/null +++ b/vite.content.config.ts @@ -0,0 +1,32 @@ +import { defineConfig } from 'vite'; +import { resolve } from 'path'; + +/** + * Separate Vite config for content scripts. + * + * Content scripts injected via chrome.scripting.executeScript must be + * completely self-contained — they cannot resolve ES module chunk imports + * at runtime. Building content scripts as a single-entry point ensures that + * all static imports are bundled inline and no shared chunks are emitted. + */ +export default defineConfig({ + base: './', + resolve: { + alias: { + '@': resolve(__dirname, './src') + } + }, + build: { + outDir: 'dist', + emptyOutDir: false, + rollupOptions: { + input: { + 'content/selection-overlay': resolve(__dirname, 'src/content/selection-overlay.ts') + }, + output: { + entryFileNames: '[name].js', + assetFileNames: '[name].[ext]' + } + } + } +});