Commit graph

152 commits

Author SHA1 Message Date
Khoa Vo
7da10fb2c3 feat: Add rotating proxy with health check, fix CORS for localhost, update extension 2026-04-27 17:51:09 +07:00
Valerie
c2f3d3b34e fix: use /trackManifests instead of /track because /track is broken
3 big booms
2026-04-23 23:23:56 +02:00
uimaxbai
fa8fc6be15 Revert "style: auto-fix linting issues"
This reverts commit e1b0b403fa.
2026-04-22 21:28:43 +01:00
uimaxbai
9138ec5289 Restore extension AudioContext features and fix track recommendations
- Add crossorigin="anonymous" for audio/video elements in extension context only
  (required for createMediaElementSource in Web Audio API)
- Restore EQ, binaural DSP, M/S processing, and audio graph wiring for extension users
- Fix recommended tracks showing "Unknown Artist" and no album cover:
  - v2 OpenAPI artist endpoint doesn't include track details in `included`,
    so now fetches v1 /artists/{id}/toptracks in parallel for complete TidalTrack objects
  - v1 tracks carry album.cover UUID and full artist/artists arrays directly
- Fix prepareTrack() to populate artists[] from artist when missing (and vice versa)
- Fix relationship data polymorphism (single ref vs array) in getSimilarArtists/Albums
- Add artistBiographies lookup key for biography included items

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-22 20:30:43 +01:00
Samidy
b528720e8b
Revert "Fix v2 artists API: correct data access paths" 2026-04-19 01:49:00 +03:00
Daniel
00efcb8017 Fix v2 artists API: correct data access paths 2026-04-18 16:33:11 -05:00
uimaxbai
6d79dafadb make hi-res work 2026-04-18 12:57:40 +01:00
uimaxbai
c2b3f7312e fix streaming for now 2026-04-18 12:16:07 +01:00
uimaxbai
6ddb411b94 Revert 2026-04-18 10:04:31 +01:00
Samidy
4dbddfab41 please please please work 2026-04-18 01:31:50 +03:00
uimaxbai
274baa2a79 fix EVERYTHING 2026-04-17 22:40:15 +01:00
copilot-swe-agent[bot]
ef71d402e2
fix: correct artist page fallback URL and picture field
Agent-Logs-Url: https://github.com/monochrome-music/monochrome/sessions/f6c0d1c5-5b9f-486a-a3c1-333a4bcb62c4

Co-authored-by: binimum <61615730+binimum@users.noreply.github.com>
2026-04-17 08:23:20 +00:00
copilot-swe-agent[bot]
9bd76fd2dd
Avoid ?q fallback on external hifi-api search
Agent-Logs-Url: https://github.com/monochrome-music/monochrome/sessions/b34dfb4a-cfae-459a-ac01-4c675551575b

Co-authored-by: binimum <61615730+binimum@users.noreply.github.com>
2026-04-16 19:22:30 +00:00
copilot-swe-agent[bot]
66d132dbbc
Use direct TIDAL combined search only before hifi-api fallback
Agent-Logs-Url: https://github.com/monochrome-music/monochrome/sessions/b34dfb4a-cfae-459a-ac01-4c675551575b

Co-authored-by: binimum <61615730+binimum@users.noreply.github.com>
2026-04-16 19:18:45 +00:00
trentisiete
ef2edefc4c fix: normalize artist ID comparison to handle string/number types 2026-04-05 20:11:41 +03:00
trentisiete
fbe101050a fix: filter albums and tracks by artist ID to prevent showing wrong same-name artists 2026-04-05 20:11:41 +03:00
binimum
17e3430691 style: auto-fix linting issues 2026-04-05 15:23:38 +00:00
binimum
3ed9d8b589
refactor: streamline image processing and cover URL handling 2026-04-05 15:22:50 +00:00
Daniel
648e47e1d8 fix(linting): fix js linting issues 2026-04-04 01:37:47 +03:00
Daniel
a282b37d88 refactor(hifi): add getArtistBiography 2026-04-04 01:37:47 +03:00
edideaur
bdde8fdb6a
fix: l opens lyrics 2026-04-02 18:28:46 +00:00
tryptz
0652aa4866 style: auto-fix linting issues 2026-04-02 11:05:12 +03:00
tryptz
782e98061b fix: address all CodeRabbit review findings from PR #477
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
2026-04-02 11:05:12 +03:00
tryptz
d4d1fe8494 feat: AutoEQ and speaker EQ enhancements
Adds AutoEQ integration with interactive parametric EQ graph,
speaker/room correction with shelf filters, and improved EQ
persistence via IndexedDB.
2026-04-02 11:05:12 +03:00
SamidyFR
c17c249ca9 style: auto-fix linting issues 2026-03-31 17:09:15 +00:00
Daniel
bb387ac30b fix(downloads): pass DOLBY_ATMOS to applyAudioPostProcessing if track is atmos 2026-03-31 12:07:31 -05:00
Daniel
39163fa4b6 fix(downloads): applyAudioPostProcessing now uses lookup audio quality to determine if the available track is lossless 2026-03-30 21:10:48 -05:00
Daniel
cde606b5cc fix(downloads): pass abort signal to atmos manifest fetch 2026-03-28 19:25:55 -05:00
Daniel
a9798007cc fix(api): ensure all tracks are prepared 2026-03-28 19:21:18 -05:00
Daniel
1b5385d1ec fix(api): remove allowedDomains for getVideo
- Removed 'allowedDomains' parameter from the fetchWithRetry method call in getVideoStreamUrl.
2026-03-28 15:33:14 -05:00
Daniel
9c34dd4b9d feat(downloads): add check box for atmos, and fallback to desired quality if unavailable 2026-03-28 15:26:55 -05:00
Daniel
9f7b0ff525 refactor(ffmpeg): add ffmpegInfo function and refactor ffmpeg usage 2026-03-28 15:26:55 -05:00
Daniel
80cd8b2f9b refactor(downloads): cleanup downloads and add mp4 stik atom 2026-03-24 14:10:28 -05:00
Daniel
2440939f4b refactor(hifi): update HiFi.ts to add trackManifests route and refactor 2026-03-23 13:42:03 -05:00
binimum
44d92b46dc
feat: implement side panel resizer and responsive styles 2026-03-22 20:38:08 +00:00
binimum
d9878596e2 style: auto-fix linting issues 2026-03-22 20:13:27 +00:00
binimum
d783642401
feat: add Atmos support, use new API endpoint, streamline API caching 2026-03-22 20:08:30 +00:00
edidealt
7e16dc23c2
Merge pull request #380 from DanTheMan827/singleton
Convert classes to singleton pattern
2026-03-22 03:36:13 +02:00
edidealt
6f8b479d0f infinite track playing for popular tracks 2026-03-21 23:25:16 +00:00
Daniel
2fdd169ba0 refactor(Hifi): convert to singleton 2026-03-21 18:05:09 -05:00
akane
446b6fff55 fix(ui): deduplicate recommended songs on homepage 2026-03-21 12:30:38 -07:00
Daniel
397fc53a46 feat(downloads): add local media folder bulk download options and folder template paths
This also implements a ModernSettings class for a more streamlined settings API.
2026-03-20 18:00:14 -05:00
Daniel
a385cb558a fix(api): use an instance for /recommendations 2026-03-20 13:02:48 -05:00
Daniel
f2b8cdc812 feat(downloads): add metadata to videos 2026-03-20 12:52:07 -05:00
Daniel
8edca3678d fix(api): remove domain checks from searchVideos 2026-03-20 11:57:38 -05:00
Daniel
b48ee588aa fix(api): don't cache direct queries
This also adds a global `window.allTidal` flag to force all queries to go through the API, which is useful for testing.
2026-03-20 11:54:04 -05:00
Daniel
47b8c36594 fix(api): use direct queries when possible 2026-03-20 11:38:31 -05:00
edidealt
affb6dd5de
Merge pull request #350 from DanTheMan827/replace-taglib-wasm
Replace taglib-wasm with taglib-ts
2026-03-19 22:22:38 +02:00
Daniel
895d5dd20f feat(metadata): replace taglib-wasm with @dantheman827/taglib-ts
- 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.
2026-03-19 15:14:52 -05:00
Daniel
cd64239ba1 refactor(downloads): add readableStreamIterator for easier stream handling
- Introduced `readableStreamIterator` to convert ReadableStream into async iterable.
- Updated `LosslessAPI` to utilize `readableStreamIterator` for handling response body.
- Modified `ZipNeutralinoWriter` to use `readableStreamIterator` for reading chunks.
2026-03-19 15:12:24 -05:00