wraith/vite.config.ts
Vantz Stockwell 6d3e973848
All checks were successful
Build & Sign Wraith / Build Windows + Sign (push) Successful in 3m42s
fix: strip crossorigin from HTML for WKWebView child windows + status bar
Tool windows (still closing instantly with CSP=null):
- Root cause: Vite adds crossorigin attribute to <script> and <link> tags
  in index.html. This forces CORS mode for resource loading. WKWebView's
  Tauri custom protocol handler (tauri://) may not return proper CORS
  headers for child WebviewWindows, causing the module script to fail
  to load and the window to close immediately.
- Fix: Vite plugin strips crossorigin from built HTML via transformIndexHtml
- Also set crossOriginLoading: false for Rollup output chunks

Status bar:
- h-[48px] text-base px-6 — 48px height with 16px text, explicit pixel
  value to avoid Tailwind spacing ambiguity

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 12:56:24 -04:00

42 lines
1.3 KiB
TypeScript

import { defineConfig, type Plugin } from "vite";
import vue from "@vitejs/plugin-vue";
import tailwindcss from "@tailwindcss/vite";
import { resolve } from "path";
/** Strip crossorigin attribute from HTML — WKWebView + Tauri custom protocol compatibility. */
function stripCrossOrigin(): Plugin {
return {
name: "strip-crossorigin",
transformIndexHtml(html) {
return html.replace(/ crossorigin/g, "");
},
};
}
export default defineConfig({
plugins: [vue(), tailwindcss(), stripCrossOrigin()],
resolve: {
alias: {
"@": resolve(__dirname, "src"),
},
},
// Tauri expects a fixed port and does not use Vite's host broadcasting
server: {
port: 5173,
strictPort: true,
host: false,
},
// Suppress Vite's own clear-screen so Tauri's stdout stays readable
clearScreen: false,
build: {
// Tauri supports ES2021 on all desktop targets
target: ["es2021", "chrome100", "safari13"],
minify: !process.env.TAURI_DEBUG ? "esbuild" : false,
sourcemap: !!process.env.TAURI_DEBUG,
// Disable crossorigin attribute on script/link tags — WKWebView on
// macOS may reject CORS-mode requests for Tauri's custom tauri://
// protocol in dynamically created child WebviewWindows.
crossOriginLoading: false,
},
});