setEQMode() was unconditionally setting isEQEnabled = true, overriding
the user's toggle state. Now respects equalizerSettings.isEnabled().
Also fixed the toggle handler to properly disable the graphic EQ chain
in legacy mode.
- Add 16-band graphic equalizer with legacy EQ mode
- Add speaker measurement and room correction EQ
- Fix audio skipping with AutoEQ on Android background
- Improve audio performance to prevent skipping under CPU load
- Fix dual EQ applied when switching between legacy and parametric modes
- Remove redundant Equalizer settings tab
- Improve mobile EQ band layout and collapsible database section
- Fix reference to enrichTrack
- Added detailed JSDoc comments for better documentation
- Updated API reference to use MusicAPI.instance for consistency
- Improved error handling and metadata enrichment process
- Added default parameter for api in downloadTrackWithMetadata function
- Updated api call to enrichTrack to use the correct instance
- Imported MusicAPI for proper functionality
This will write each artist separately to the metadata rather than as a single concatenated string. This allows for better library searching if the player supports it.
If multiple artists are written to an m4a file, iTunes will only show the first artist.
Engine & algorithm:
- Use default shelf Q (1/√2) in calculateBiquadResponse for shelf filters
- Compute normalization offset on measurement frequency grid to avoid bias
- Try stale cache for all fetch errors in autoeq-importer, not just timeouts
Audio pipeline:
- Pass postProcessingQuality (preserves Dolby Atmos override) in api.js
- Persist custom band frequencies in equalizerSettings storage
- Restore custom frequencies on _loadSettings instead of regenerating defaults
- Export clamped preamp value in applyAutoEQBands text output
- Propagate filter type and Q values through equalizer import chain
- Update freqRange after importing custom filter frequencies
- Remove return in finally block that hid LOSSLESS fallback failures
Data consistency:
- Normalize artist IDs with String() in blockArtist/unblockArtist
Lint & code quality:
- Annotate empty catch blocks (Atmos codec probes)
- Remove unused catch parameters
Accessibility:
- Add aria-label and for attributes to all AutoEQ form controls
- Add role="status" aria-live="polite" to feedback spans
- Update filter type documentation to reflect shelf support
- Hide parametric-only sections by default to match active tab
UI:
- Move AutoEq button directly under graph
- Hide shared button in Parametric/Speaker modes
- Replace hardcoded white legend dot with theme-adaptive color-mix
- Add pointer-events:none and focus-within to profile delete button