- Build Info grid now uses 2-column layout (Version|License, Platform|Build)
- Build field shows date + short commit hash (6 chars) injected at
build time via VITE_BUILD_COMMIT
- Add utils/webgl-utils.ts with context creation, shader compilation,
texture loading, and cleanup utilities
- Add shaders/fullscreen.vert for fullscreen quad rendering
- Add shaders/static.frag for basic texture display
- Add shaders/index.ts for Vite ?raw shader imports
- Add ImmersiveAmbientCanvas.svelte component with:
- WebGL2 context management
- Context loss/restore handling
- Automatic resize handling
- Performance metrics reporting
- Update app.d.ts with shader file type declarations
This is a static renderer only - no animation yet.
Phase 2 will connect to real artwork with pre-blur.
- 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.