Files
Firelink/vite.config.ts
T
NimBold edeef0ac54 fix(startup): enforce consent before download handoffs
Gate clipboard, extension, and deep-link inputs until startup consent is resolved, and serialize extension readiness transitions so native prompts cannot race the app explanation. Identify consent by the build revision so same-version updates re-enter the consent boundary.

Requested by [this X post](https://x.com/ixabolfazl/status/2077356127763804450?s=20).
2026-07-15 21:48:00 +03:30

61 lines
1.6 KiB
TypeScript

import { defineConfig } from "vitest/config";
import { execFileSync } from "node:child_process";
import react from "@vitejs/plugin-react";
import tailwindcss from '@tailwindcss/vite';
// @ts-expect-error process is a nodejs global
const host = process.env.TAURI_DEV_HOST;
const buildId = (() => {
// Release-candidate builds can keep the same semantic app version. The
// source revision is the stable identity needed for consent migrations.
const configured = process.env.VITE_BUILD_ID?.trim();
if (configured) return configured;
try {
return execFileSync('git', ['rev-parse', 'HEAD'], {
encoding: 'utf8',
stdio: ['ignore', 'pipe', 'ignore']
}).trim() || 'unknown';
} catch {
return 'unknown';
}
})();
// https://vite.dev/config/
export default defineConfig(async () => ({
plugins: [react(), tailwindcss()],
define: {
'import.meta.env.VITE_BUILD_ID': JSON.stringify(buildId)
},
test: {
exclude: [
"Extensions/**",
"**/node_modules/**",
"**/dist/**",
"**/.{idea,git,cache,output,temp}/**"
]
},
// Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`
//
// 1. prevent Vite from obscuring rust errors
clearScreen: false,
// 2. tauri expects a fixed port, fail if that port is not available
server: {
port: 1420,
strictPort: true,
host: host || false,
hmr: host
? {
protocol: "ws",
host,
port: 1421,
}
: undefined,
watch: {
// 3. tell Vite to ignore watching `src-tauri`
ignored: ["**/src-tauri/**"],
},
},
}));