- feat(taglib): updated audio buffer handling in metadata.js to use Uint8Array.
- feat(taglib): refactored addMetadataToAudio to support return type as Blob or Uint8Array
- feat(taglib): add timeout functionality to metadata functions
- Introduced `withTimeout` utility function to handle operation timeouts.
- Updated `addMetadataWithTagLib` to use `withTimeout` for promise resolution.
- Updated `getMetadataWithTagLib` to use `withTimeout` for promise resolution.
- Added default timeout parameter to both metadata functions.
- feat(taglib): improve metadata handling with ChunkedByteVectorStream
- Enhanced metadata handling in taglib.ts and taglib.worker.ts to utilize ChunkedByteVectorStream.
- fix(taglib): handle metadata addition failure gracefully
- Updated `addMetadataWithTagLib` to catch errors and return original audio data if metadata addition fails.
fix(downloads): return original blob if metadata addition fails
- Wrap addMetadataToAudio call in try-catch to handle errors.
feat(taglib): add direct calling of taglib methods
- Introduced `direct` parameter to `addMetadataWithTagLib` and `getMetadataWithTagLib` functions for direct processing in the current thread.
- Exported taglib worker functions.
Replace h2 toggle with semantic button and aria-expanded attribute,
switch from style.display to hidden attribute for visibility control,
use DOM methods instead of innerHTML for source labels and modal
options to prevent XSS, improve artist matching with ID-based lookup,
and clean up event listeners before re-attaching to prevent leaks.
Show liked tracks and playlist tracks by the artist with source
labels, collapsible chevron toggle, and real-time updates via
favorites-changed and playlist-tracks-changed events.
- #322: Fullscreen overlay padding and main-view scrollable so volume stays above taskbar when Up next is shown
- #313: Settings tab content constrained on small displays with max-width, min-width, overflow-x
- #278: HEAD request before GET for download to get Content-Length for progress bar; resolveDownloadTotalBytes in downloadProgressUtils.js