feat(immersive): add Phase 0 infrastructure for WebGL2 rendering

- Create src/lib/immersive/ module structure
- Add types.ts with ImmersiveState, ImmersiveConfig interfaces
- Add config.ts with build-time and runtime feature flags
- Add ImmersiveRenderer.ts with lifecycle management and stores
- Add index.ts as public API boundary
- Add VITE_IMMERSIVE_ENABLED to vite.config.js
- Add app.d.ts for TypeScript env declarations

Build without immersive: QBZ_IMMERSIVE=false pnpm build

No visual changes yet - this is capability detection and guards only.
This commit is contained in:
vicrodh committed 2026-02-01 10:05:12 -06:00
1 parent 600a33026a
commit 19d0916a46
6 files changed
+555

No files matched your search

+5
View File
@@ -11,6 +11,11 @@ export default defineConfig(async () => ({
'import.meta.env.VITE_BUILD_DATE': JSON.stringify(
new Date().toISOString().split('T')[0]
),
// Immersive rendering feature flag (WebGL2-based effects)
// Set QBZ_IMMERSIVE=false to compile out immersive rendering
'import.meta.env.VITE_IMMERSIVE_ENABLED': JSON.stringify(
process.env.QBZ_IMMERSIVE !== 'false'
),
},
// Vite options tailored for Tauri development and only applied in `tauri dev` or `tauri build`