- AudioContext timing issues: The worklet loading state management could cause race conditions
- Seek functionality: The seekToStep wrapper has async issues with the native engine
- Position tracking: Worklet position updates may drift from actual playback position
- Uniform buffer alignment: WGSL structs need proper padding for WebGPU
- Canvas sizing: PatternDisplay canvas doesn't properly respond to container resize
- Fallback handling: When WebGPU fails, the HTML fallback may not initialize correctly
- Canvas metrics calculation:
canvasMetricsuseMemo doesn't account for DPI scaling - Responsive layout: PatternDisplay doesn't properly handle small screen sizes
- 3D mode scaling: Studio3D component has hardcoded scale values that break layout
components/PatternDisplay.tsx- Canvas sizing, WebGPU initializationhooks/useLibOpenMPT.ts- Playback timing, worklet communicationApp.tsx- Layout structure, responsive handlingshaders/patternv0.40.wgsl- Uniform alignmentshaders/chassis_frosted.wgsl- Uniform alignment
utils/geometryConstants.ts- Layout calculationscomponents/Studio3D.tsx- 3D mode sizingindex.html- Viewport meta tag
- Fix AudioContext resume handling
- Add proper error boundaries for worklet failures
- Implement position sync validation
- Standardize uniform buffer layouts
- Add shader compilation error reporting
- Fix canvas resize observer
- Implement DPI-aware canvas sizing
- Add responsive breakpoints
- Fix 3D mode scaling
- Load and play various module formats (MOD, XM, S3M, IT)
- Test seek functionality during playback
- Verify pattern display updates in sync with audio
- Test all shader variants
- Check responsive behavior at different screen sizes
- Verify 3D mode switching
- Test dark/light mode transitions
# Run type checking
npm run typecheck
# Build for production
npm run build
# Preview production build
npm run preview
# Run dev server
npm run dev