useWaveform.ts:
- Remove requestAnimationFrame polling loop that was re-running after every
re-initialization and leaking across renders when cleanup didn't fire
- Remove local useState for isPlaying/currentTime/duration; these now come
directly from usePlayerStore selectors — WaveSurfer event handlers in
AudioService already write to the store, so no intermediate sync needed
- The useEffect is now a clean async init only; no cleanup needed (AudioService
persists intentionally across page navigations)
tests/:
- Delete 3 obsolete test files that tested removed APIs (logging system,
setupAudioContext, ensureAudioContext, initializeAudioContext)
- Add tests/audioService.test.ts: 25 tests covering initialize(), play(),
pause(), seekTo(), cleanup(), and all WaveSurfer event→store mappings
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Simplified audio context access from 7 fallback methods to 2 reliable methods
- Added comprehensive test suite with 12 tests covering all scenarios
- Enhanced error handling and debugging capabilities
- Maintained full compatibility with WaveSurfer.js 7.12.5
- Build and production deployment ready
Changes:
- src/services/audioService.ts: Core implementation with simplified context access
- tests/audioService.test.ts: Comprehensive test suite
Next: Logging optimization to reduce console spam in production
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>