Add stable extension ID for development builds

Inject manifest key via vite plugin for dev/test builds (not production).
This ensures all developers get the same extension ID: pebbngnfojnignonigcnkdilknapkgid

- Update vite.config.mts to inject key when !PRODUCTION
- Update release script to use PRODUCTION=true
- Replace old hardcoded dev extension ID in all files
This commit is contained in:
Tommy D. Rossi
2026-01-25 11:19:51 +01:00
parent 77ea5512d0
commit a15b06082b
8 changed files with 28 additions and 11 deletions
+1 -1
View File
@@ -17,7 +17,7 @@
"license": "Apache-2.0",
"scripts": {
"build": "tsc --project . && vite build --config vite.config.mts",
"reload": "bun run build && osascript -e 'tell application \"Google Chrome\" to open location \"chrome://extensions/?id=elnnakgjclnapgflmidlpobefkdmapdm\"'",
"reload": "bun run build && osascript -e 'tell application \"Google Chrome\" to open location \"chrome://extensions/?id=pebbngnfojnignonigcnkdilknapkgid\"'",
"watch": "vite build --watch --config vite.config.mts",
"clean": "rm -rf dist"
},
+1 -1
View File
@@ -961,7 +961,7 @@ async function resetDebugger(): Promise<void> {
// Our extension IDs - allow attaching to our own extension pages for debugging
const OUR_EXTENSION_IDS = [
'jfeammnjpkecdekppnclgkkffahnhfhe', // Production extension (Chrome Web Store)
'elnnakgjclnapgflmidlpobefkdmapdm', // Dev extension (loaded unpacked)
'pebbngnfojnignonigcnkdilknapkgid', // Dev extension (stable ID from manifest key)
]
// undefined URL is for about:blank pages (not restricted) and chrome:// URLs (restricted).
+6
View File
@@ -35,6 +35,12 @@ export default defineConfig({
}
}
// Inject key for stable extension ID in dev/test builds (not production)
// This ensures all developers get the same extension ID: pebbngnfojnignonigcnkdilknapkgid
if (!process.env.PRODUCTION) {
manifest.key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwCJoq5UYhOo5x8s50pVBUHjQ8idyUHnZFDj1JspWJPe6kvM7RFIaE/y5WTAH05kuK0R7v/ipcGA4ywA5wKdPKHZzkl5xstlNPj0Ivu4CqLobU7eY5G3k3Gq7wql2pbwb/A8Nat4VLbfBjQLA6TGWd3LQOHS6M0B3AvrtEw7DLDUdGKh4SCLewCbdlDIzpXQwKOzrRPyLFBwj9eEeITy5aNwJ9r9JMNBvACVZiRCHsGI6DufU+OiIO232l/8OoNNt6kdTMyNgiqOogFApXPJwREUwZHGqjXD3s6bXiBIQtwkNyZfemHKkxj6g/fhCV2EMgTY6+ikQEY1gEJMrRVmcYQIDAQAB';
}
return JSON.stringify(manifest, null, 2);
}
},