memlnaut-nisps/manifold/vite.config.ts
monkey-w1n5t0n 19b7f7eee8 feat(manifold): add convertible React front-end + simplify console chrome
Adds the Manifold app (manifold/) — the convertible-mode React front-end on
the real NISPS ML+audio engine, served live at meml.lnfinitemonkeys.org/next/.

Console chrome trimmed per UI pass:
- drop mode label + subtitle from the top-left overlay (keep MEMLNaut wordmark)
- remove the composite split preset/ratio readout (top-centre)
- remove the OUTPUT corner tag above the bars
- remove the A/B compare toggle from the verdict cluster
- remove the follow button + input/noise readout (bottom-left)
- remove AltitudeNav focus switcher (bottom-right)
2026-06-28 03:28:45 +02:00

34 lines
1.1 KiB
TypeScript

import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import { fileURLToPath, URL } from 'node:url';
// COOP/COEP are required for SharedArrayBuffer + the AudioWorklet path (the
// browser-only C15 / "Powerful Synth Engine" SAB ring needs them; nisps audio
// itself uses per-thread instances). Set on dev server AND preview. In prod the
// nginx vhost sets them at server scope, so every sub-path (/next) inherits.
const crossOriginIsolationHeaders = {
'Cross-Origin-Opener-Policy': 'same-origin',
'Cross-Origin-Embedder-Policy': 'require-corp',
};
export default defineConfig({
plugins: [react()],
resolve: {
alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) },
},
// base:'./' → relative asset URLs so one dist/ mounts at both / and /next.
// WASM URLs must be resolved via import.meta.env.BASE_URL, never hardcoded.
base: './',
server: {
port: 5273,
headers: crossOriginIsolationHeaders,
},
preview: {
port: 4273,
headers: crossOriginIsolationHeaders,
},
build: {
target: 'es2022',
sourcemap: true,
},
});