Daniel
852baeaa17
refactor(player): convert to singleton
2026-03-21 17:21:09 -05:00
Daniel
6728b17efe
fix: bun format
2026-03-21 16:56:05 -05:00
akane
7008de33b0
fix(ui): revert history dedup to preserve play frequency
2026-03-21 12:33:25 -07:00
akane
446b6fff55
fix(ui): deduplicate recommended songs on homepage
2026-03-21 12:30:38 -07:00
akane
da5ade79a7
perf(ui): cache settings Fuse instance in command palette
2026-03-21 12:04:25 -07:00
akane
7e56fc5030
fix(ui): command palette accessibility, theme handling, and edge cases
2026-03-21 11:56:34 -07:00
akane
d75f0e3196
refactor(ui): use icons.ts for command palette icons
2026-03-21 11:53:16 -07:00
akane
3415901bdb
feat(ui): add cmdk-style command palette
2026-03-21 11:35:09 -07:00
Daniel
c74389d330
fix(metadata): write xid to mp4 files
2026-03-20 19:44:21 -05:00
edidealt
e22d2b96ad
separate donate page
2026-03-21 00:03:19 +00:00
edidealt
d8709f447f
Merge pull request #369 from DanTheMan827/copilot/add-bulk-download-options
...
Add bulk download options and streamline settings API
2026-03-21 01:48:07 +02:00
DanTheMan827
5c5ea904c8
style: auto-fix linting issues
2026-03-20 23:00:41 +00: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
edidealt
086b190308
Merge pull request #366 from matioku/fix/share-url-construction
...
fix(events): fix share/open-in-new-tab URL construction
2026-03-20 22:57:53 +00:00
edidealt
f9a58b1cac
Merge pull request #368 from DanTheMan827/patch-1
...
refactor(hifi): update localStorage and token handling
2026-03-21 00:40:15 +02:00
edidealt
90f4930634
whoops forgot mobile selection
2026-03-20 22:36:38 +00:00
edidealt
ab11ff6a37
multi-track selection
2026-03-20 22:28:08 +00:00
Daniel
4f0d95bf42
refactor(hifi): update localStorage and token handling
...
Modified token encoding to use globalThis and added a setToken method.
2026-03-20 17:13:23 -05:00
edidealt
cc2f28a798
fix track right clicks
2026-03-20 20:54:05 +00:00
matioku
8f1994d9d3
fix(events): fix share/open-in-new-tab URL construction
2026-03-20 21:30:15 +01:00
Daniel
1bd895093b
fix(HiFi): enhance token fetching
2026-03-20 14:32:30 -05:00
edidealt
9071670ad9
Merge pull request #363 from DanTheMan827/video-metadata
...
Add metadata support for video downloads
2026-03-20 20:25:07 +02:00
Daniel
5d697760d0
fix(HiFi.ts): cache token
2026-03-20 13:19:15 -05:00
Daniel
5ac4d23199
fix(HiFi.ts): ensure only one token is fetched
...
If multiple calls to the HiFi methods were called at once, you could potentially have ended up with multiple simultaneous token api calls
2026-03-20 13:12:40 -05:00
edidealt
7bcb9e1fb5
listenbrainz love on like
2026-03-20 18:07:06 +00: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
binimum
f378552028
refactor: add formatTemplate import to downloads.js
2026-03-20 00:33:05 +00:00
binimum
5bb8713bbf
refactor: update MediaPlayer import and add platform detection
2026-03-19 21:01:29 +00:00
edidealt
0b2b91a8a4
fix builds
2026-03-19 20:49:16 +00:00
Daniel
c19dbcf52a
refactor: adjust imports to allow for file splitting
...
- dynamically import router
- dynamically import visualizers
- update import syntax for am-lyrics to use dynamic import syntax
2026-03-19 15:34:51 -05:00
Daniel
4e2a595504
refactor(hls/dash): externalize hls.js and dashjs to reduce initial bundle size
2026-03-19 15:34:51 -05:00
Daniel
e2a09b9b32
refactor: externalize svg images and add new vite plugin
...
The plugin runs all imported SVG files through svgo.
For index.html, you can use the following syntax:
```html
<use svg="file.svg" size="24" />
```
For scripts, use the `?svg` import query
```javascript
import SVG_FILE from './file.svg?svg&size=24
```
Note: size is shorthand for specifying both width and height individually. You can also set any property of the base SVG element.
You can also use the `?svg&icon` query to return a function that allows dynamically resizing the SVG string.
2026-03-19 15:28:33 -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
edidealt
6b986402ff
Merge pull request #351 from DanTheMan827/optimistic-local-scan
...
Render local files in UI as scanned
2026-03-19 22:22:14 +02:00
edidealt
fc4adfcd32
Merge pull request #352 from DanTheMan827/minor-fixes
...
A collection of fixes
2026-03-19 22:21:53 +02:00
Daniel
7c5424437e
feat(ffmpeg): add WAV format support and detection for use in dev mode
...
- Added WAV format to customFormats with appropriate metadata.
- Implemented detection for RIFF/WAVE format in detectAudioFormat function.
2026-03-19 15:14:52 -05: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
98953b4572
feat(local-files): initialize localFilesCache and render local files in UI after each track is scanned
2026-03-19 15:13:13 -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
Daniel
61aebf7994
refactor(metadata): move METADATA_STRINGS to separate file
2026-03-19 15:11:37 -05:00
Daniel
fd06160f7e
refactor(doTimed): refactor error handling and skip timing when not in dev mode
2026-03-19 15:11:15 -05:00
Daniel
b7cac5724d
fix(downloads): don't disable hi-res downloads on iOS or Safari
...
Just because the browser can't play them doesn't mean the user may not want to download them
2026-03-19 15:11:15 -05:00
Daniel
393491e2c8
refactor(platform-detection): add platform-detection.ts for browser and platform detection
2026-03-19 15:09:58 -05:00
Daniel
c315d2dfcd
fix(downloads): update lossless quality labels
2026-03-19 15:09:58 -05:00
Daniel
2a4136a5f6
fix(downloads): progress index now shows correct track number in bulk download
2026-03-19 15:07:28 -05:00
edidealt
992974d790
fix image uploads
2026-03-19 18:58:15 +00:00