/ 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  });