v1.1.0
What's New
Error Handling & Resilience
- ErrorBoundary component for graceful React tree crash recovery
- Global error handlers for uncaught exceptions and unhandled promise rejections (web + native)
- Retry utility with exponential backoff for recoverable audio operations
- Store initialization module for cross-store synchronization
Performance
- Memoized SpeedSlider, VolumeSlider, TrackProgressBar, TrackListItem with React.memo
- Wrapped MainScreen handlers in useCallback to stabilize references
- Optimized FlatList with getItemLayout and memoized keyExtractor
- Playback store update helper with early-exit when values unchanged
- Lifted getMasterLoopDuration selector from per-item to TrackList level
Type Safety
- Converted AudioErrorCode from enum to string union with exhaustive switch via assertNever
- Centralized QualityLevel type across settings and ffmpeg modules
- Store state type aliases for cleaner selector signatures
- Removed
anyusage in migration tests
Bug Fixes
- Recording duration capture and UI flash on stop
- Infinity duration handling in imported tracks
- Silenced production log noise
- Lint errors in skeleton and other files
Infrastructure
- Added CLAUDE.md for Claude Code onboarding
- Skeleton loader for top controls
- SEO meta tags and Open Graph static files
- Restructured project to frontend/ workspace pattern
- Replaced console.* with logger utility
- Apache 2.0 license (was MIT)
Documentation
- Audited all docs against codebase reality
- Removed stale/theoretical docs (TEST_FAILURES_ANALYSIS, NATIVE_MIXER_LOOP_IMPLEMENTATION, USER_GUIDE)
- Fixed false claims (keyboard shortcuts, persistence, build commands)
- Moved CHANGELOG.md to project root
Full Changelog: v1.0.0...v1.1.0