const xaigenStudio = /^xaigen$/i.test(String(process.env.NUXT_PUBLIC_STUDIO || '').trim()) || /xaigen/i.test(String(process.env.NUXT_PUBLIC_INSTANCE_NAME || '').trim()) export default defineNuxtConfig({ compatibilityDate: '2025-08-01', modules: ['@nuxtjs/tailwindcss'], css: ['~/assets/css/main.css'], app: { head: { title: 'AIGen — MiniMax H3', htmlAttrs: { lang: 'en', class: 'dark' }, meta: [ { charset: 'utf-8' }, { name: 'viewport', content: 'width=device-width, initial-scale=1, viewport-fit=cover' }, { name: 'theme-color', content: '#09090b' }, { name: 'description', content: 'Headless MiniMax H3 image-to-video studio relayed to local ComfyUI.' } ], link: [ { rel: 'icon', type: 'image/svg+xml', href: xaigenStudio ? '/favicon.svg' : '/favicon-aigen.svg' }, { rel: 'preconnect', href: 'https://fonts.googleapis.com' }, { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' }, { rel: 'stylesheet', href: 'https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@400;500;600;700&family=Syne:wght@600;700;800&display=swap' } ] } }, runtimeConfig: { comfyHost: process.env.COMFY_HOST || '', comfyPort: process.env.COMFY_PORT || '', comfyLaunchCmd: process.env.COMFY_LAUNCH_CMD || '', comfyControlUrl: process.env.COMFY_CONTROL_URL || '', comfyControlToken: process.env.COMFY_CONTROL_TOKEN || '', monitorToken: process.env.MONITOR_TOKEN || '', imageComfyHost: process.env.IMAGE_COMFY_HOST || '', imageComfyPort: process.env.IMAGE_COMFY_PORT || '', imageComfyPrimaryHost: process.env.IMAGE_COMFY_PRIMARY_HOST || '', imageComfyFallbackHost: process.env.IMAGE_COMFY_FALLBACK_HOST || '', imageComfyLaunchCmd: process.env.IMAGE_COMFY_LAUNCH_CMD || '', imageComfyControlUrl: process.env.IMAGE_COMFY_CONTROL_URL || '', imageComfyControlToken: process.env.IMAGE_COMFY_CONTROL_TOKEN || '', promptComfyHost: process.env.PROMPT_COMFY_HOST || '', sessionSecret: process.env.NUXT_SESSION_SECRET || '', oidcClientId: process.env.NUXT_OIDC_CLIENT_ID || '', oidcClientSecret: process.env.NUXT_OIDC_CLIENT_SECRET || '', oidcIssuer: process.env.NUXT_OIDC_ISSUER || '', oidcAuthorizeUrl: process.env.NUXT_OIDC_AUTHORIZE_URL || '', oidcTokenUrl: process.env.NUXT_OIDC_TOKEN_URL || '', oidcUserinfoUrl: process.env.NUXT_OIDC_USERINFO_URL || '', libraryDir: process.env.LIBRARY_DIR || (process.env.NODE_ENV === 'production' ? '/data/library' : '.data/library'), authMode: process.env.NUXT_AUTH_MODE || process.env.AUTH_MODE || '', authUsername: process.env.AUTH_USERNAME || '', authPassword: process.env.AUTH_PASSWORD || '', backupStudioUrl: process.env.BACKUP_STUDIO_URL || (xaigenStudio ? '' : 'https://xaigen.carrgarage.com'), backupStudioToken: process.env.BACKUP_STUDIO_TOKEN || 'carr-aigen-xaigen-backup', backupIngestToken: process.env.BACKUP_INGEST_TOKEN || 'carr-aigen-xaigen-backup', purgeComfyOutputs: process.env.PURGE_COMFY_OUTPUTS !== 'false', comfyFilenamePrefix: process.env.COMFY_FILENAME_PREFIX || 'video/MiniMax_H3', kreaConceptLora: process.env.NUXT_KREA_CONCEPT_LORA || '', public: { authEnabled: process.env.NUXT_PUBLIC_AUTH_ENABLED === 'true', authMode: process.env.NUXT_PUBLIC_AUTH_MODE || process.env.AUTH_MODE || '', instanceName: process.env.NUXT_PUBLIC_INSTANCE_NAME || 'AIGen', // NUXT_PUBLIC_STUDIO=xaigen on the xAIGen Coolify app (LTX Pink Cherry + xAIGen-prefixed LoRAs) studio: process.env.NUXT_PUBLIC_STUDIO || '', kreaConceptLora: process.env.NUXT_PUBLIC_KREA_CONCEPT_LORA || process.env.NUXT_KREA_CONCEPT_LORA || '', backupStudioEnabled: !xaigenStudio } }, nitro: { preset: 'node-server', routeRules: { '/api/generate/**': { headers: { 'Cache-Control': 'no-cache, no-store, no-transform', 'X-Accel-Buffering': 'no' } }, '/api/prompt/**': { headers: { 'Cache-Control': 'no-cache, no-store, no-transform' } } } } })