/ wxt.config.ts
wxt.config.ts
1 import { defineConfig } from 'wxt'; 2 import { svelte } from '@sveltejs/vite-plugin-svelte'; 3 4 export default defineConfig({ 5 srcDir: 'src', 6 outDir: '.output', 7 8 manifest: { 9 name: 'Mnemonic', 10 description: 'Organize browser windows into hierarchical workspaces with context switching', 11 version: '5.1.0', 12 13 permissions: ['tabs', 'storage', 'windows', 'bookmarks', 'scripting', 'contextMenus', 'identity'], 14 15 // Host permissions for Claude API, fetching page content for summaries, and Todoist API 16 host_permissions: ['https://api.anthropic.com/*', 'https://api.todoist.com/*', 'https://todoist.com/*', '<all_urls>'], 17 18 action: { 19 default_popup: 'popup.html', 20 default_icon: { 21 '16': 'icons/icon-16.png', 22 '32': 'icons/icon-32.png', 23 '48': 'icons/icon-48.png', 24 '128': 'icons/icon-128.png', 25 }, 26 }, 27 28 // Firefox-specific settings (required for installation) 29 browser_specific_settings: { 30 gecko: { 31 id: 'mnemonic@workspace.manager', 32 strict_min_version: '109.0', 33 }, 34 }, 35 36 }, 37 38 // Hook to fix Firefox MV3 manifest 39 hooks: { 40 'build:manifestGenerated': (wxt, manifest) => { 41 // Firefox MV3 requires type: module for background scripts 42 if (wxt.config.browser === 'firefox' && manifest.background) { 43 (manifest.background as { scripts?: string[]; type?: string }).type = 'module'; 44 } 45 }, 46 }, 47 48 // Target browsers - primary focus on privacy-respecting browsers 49 browser: ['chrome', 'firefox'], 50 51 // Use MV3 52 manifestVersion: 3, 53 54 // Firefox-specific overrides 55 runner: { 56 chromiumArgs: ['--user-data-dir=.wxt/chrome-data'], 57 }, 58 59 // Vite configuration 60 vite: () => ({ 61 plugins: [svelte()], 62 build: { 63 sourcemap: process.env.NODE_ENV === 'development', 64 }, 65 }), 66 });