Commit graph

1382 commits

Author SHA1 Message Date
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
edideaur
fc9132157e
Merge pull request #371 from DanTheMan827/patch-2
fix(metadata): write xid to mp4 files
2026-03-21 12:34:15 +02: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
edidealt
98b65509ea
Merge pull request #364 from DanTheMan827/hifi-token
fix(HiFi): enhance token fetching
2026-03-20 22:35:29 +02: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
edidealt
5d0d375242
Merge pull request #362 from DanTheMan827/hifi-api
Fix API caching and enhance query handling for testing
2026-03-20 19:00:17 +02: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
edidealt
44ec9ed6d9
Merge pull request #361 from DanTheMan827/hifi-api
fix(api): use direct queries when possible
2026-03-20 18:47:28 +02: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
edidealt
f76063d31a
Merge pull request #354 from binimum/main
URGENT refactor: update MediaPlayer import and add platform detection
2026-03-19 23:17:41 +02: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
edidealt
6336df3ad9
Merge pull request #349 from DanTheMan827/split-hls-dashjs
Externalize hls.js and dashjs to reduce bundle size
2026-03-19 22:35:51 +02: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
edidealt
e4afdf833c
Merge pull request #348 from DanTheMan827/svg-refactor
Refactor SVG handling with new Vite plugin and externalization
2026-03-19 22:30:58 +02:00
edidealt
5ee5097acb
Merge branch 'main' into svg-refactor 2026-03-19 22:30:25 +02:00
edidealt
d49f3602e6
Merge pull request #353 from monochrome-music/dependabot/npm_and_yarn/flatted-3.4.2
chore(deps-dev): bump flatted from 3.4.0 to 3.4.2
2026-03-19 22:29:28 +02: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
dependabot[bot]
e109a5f236
chore(deps-dev): bump flatted from 3.4.0 to 3.4.2
Bumps [flatted](https://github.com/WebReflection/flatted) from 3.4.0 to 3.4.2.
- [Commits](https://github.com/WebReflection/flatted/compare/v3.4.0...v3.4.2)

---
updated-dependencies:
- dependency-name: flatted
  dependency-version: 3.4.2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-19 20:23:20 +00: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