Commit graph

1401 commits

Author SHA1 Message Date
jeffvli
dd70d30cd3 fix inconsistent image loader aspect ratio 2025-11-01 22:17:02 -07:00
Kendall Garner
1a176fd118
Refactor add to playlist modal (#1236)
* Refactor add to playlist modal

* redesign base modal component, add ModalButton component

* improve visibility of filled button focus

---------

Co-authored-by: jeffvli <jeffvictorli@gmail.com>
2025-11-01 21:57:12 -07:00
Xudong Zhou
829c27a5e9
Prevent Media Session Handling on MPV (#1212)
* Remove MediaSession Handling on MPV

* Add playbackType to config.json for Main Thread Access

* Disabling settings without Hiding
2025-11-01 18:26:16 -07:00
jeffvli
0ca9eb0fcd fix sidebar image using invalid fallback value 2025-11-01 12:49:48 -07:00
jeffvli
3d66a15ae6 fix setting description for sidebar (collapsed) nav (#1218) 2025-10-31 17:28:36 -07:00
jeffvli
6a04c709f0 remove z-index from playerbar controls (#1218) 2025-10-31 17:27:33 -07:00
Xudong Zhou
dd34888961
Fix Lyric Translation Not Resetting (#1208)
* Refactor lyrics translation and index handling

* Add auto translation toggle to lyric settings

* Add enableAutoTranslation setting to lyrics
2025-10-31 17:08:10 -07:00
Jake King
a9f2b083fa
Import / Export Feishin Settings (#1163)
* Create a shared DragDrop Zone

- This zone allows the dropping of files
- The zone allows validation by parent
- The zone allows customisation like icon shown

* Import Settings

- Ability to import settings from a JSON file
- Validation to ensure file compatibility
- Visualiser for viewing string differences

* i18n

- Moved all hardcoded values to be en localised

* Zod / Validation

This commit contains the code to move settings to using ZOD, the reason for this is so that we can validate the settings schema that is being imported.

This commit also adds various validation and transforms to ensure the settings being reimported match values we expect.

I also removed the original crude validation and replaced it with the new ZOD parser that will handle this for us.

Finally the "styles-settings" component will listen to any external content updates and update its value, the reasoning is the external import wouldn't update the existing value.


- Split Settings schema into two parts, schema that is validated on import and schema that is not
- Schemas are merged to make the full SettingsStateSchema

* Migrate during validation

- Migration is done as part of validation
- Updated the store version to v10 as there has been changes to the settings
- Migrate will now add the fields from v9 to v10


- the build was failing due to ids not being mapped to their enum values

---------

Co-authored-by: Jeff <42182408+jeffvli@users.noreply.github.com>
2025-10-28 20:54:13 -07:00
Kendall Garner
a379100c9f
fix: disable certain playlist controls when search is enabled 2025-10-26 12:03:36 -07:00
Kendall Garner
4cbbb4035d
feat: add filtering for now playing view and sidebar 2025-10-26 11:51:55 -07:00
Lyall
4dd52b0cef
feat: Add explicit status for Navidrome and OpenSubsonic (#1220)
* add navidrome explicit status

* add ExplicitStatus enum and support opensubsonic

* add explicit status to cards
2025-10-26 13:48:45 +00:00
Kendall Garner
58ccd0cfd0
bugfix: remove duplicate scrobbling when there is only one item in the queue (#1222) 2025-10-25 20:25:07 +00:00
jeffvli
ce1d37479c add migration to reset all users to native window bar style (#1211) 2025-10-22 02:49:37 -07:00
Tarulia
a9af1e91d4
Disable Media Keys with MediaSession on Windows (#1207)
In f07393c8 we enabled the MediaSession API, which from Chromium's side
brings its own native way of handling Global Media Keys. However, it
turns out having this enabled seemingly conflicts with Windows 11's SMTC
implementation when we also bind the Media Keys using Electron's Global
Hotkeys API (Windows 10 is apparently fine, but now EOL).

Globally passing `HardwareMediaKeyHandling` to `disable-features` was
considered, however using the MediaSession API requires
`HardwareMediaKeyHandling` to be enabled, so this is not an option.

Instead, with MediaSession enabled we need to let Chromium handle the
Media Keys, while without MediaSession we bind our own Global Hot Keys
for users that have them enabled in the settings.

Co-authored-by: Xudong Zhou <godzmichael@outlook.com>
2025-10-21 21:48:09 -07:00
Lyall
848b3f58b3
Fix short album/artist name breaking Discord presence (#1191)
* Fix short album/artist name breaking Discord presence

* fix lint rule that isn't firing, cleanup types

---------

Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com>
2025-10-14 02:17:09 +00:00
jeffvli
b16e57710b hide mediasession setting for non-desktop 2025-10-13 12:06:03 -07:00
jeffvli
931e96b9d1 fix media session setting toggle for web 2025-10-13 12:00:42 -07:00
jeffvli
c27b86d2b2 fix media session settings error on web 2025-10-13 11:49:34 -07:00
jeffvli
1b15c73db0 fix scrobble time race condition
- revert playerbar slider refactor
- re-implement mediasession handler
2025-10-13 11:44:42 -07:00
jeffvli
4e53030e8d Revert "refactor playerbar slider to separate component"
This reverts commit 309b49b46e.
2025-10-13 11:38:26 -07:00
jeffvli
22b798812e Revert "fix playback controls being called multiple times on media key input"
This reverts commit 1b8661d566.
2025-10-13 11:38:19 -07:00
jeffvli
1b8661d566 fix playback controls being called multiple times on media key input 2025-10-13 04:33:11 -07:00
Kendall Garner
68476deb98
fix album song count 2025-10-12 16:44:05 -07:00
jeffvli
c88c6cf55e add mediasession playback controls 2025-10-12 16:37:24 -07:00
jeffvli
58becc5c8e add useMediaSession hook to set metadata and status 2025-10-12 16:07:59 -07:00
jeffvli
309b49b46e refactor playerbar slider to separate component 2025-10-12 16:07:00 -07:00
jeffvli
40e7eda882 hide mediasession setting on desktop non-windows 2025-10-12 15:53:16 -07:00
Mike Benz
f07393c82a
enable mediaSession api (#1040)
* enable mediaSession api
2025-10-12 14:59:30 -07:00
Lyall
3636384508
show time remaining instead of duration on click (#1179)
* show time remaining on duration click
2025-10-12 14:22:58 -07:00
jeffvli
9f8d9a5b28 move update settings to advanced tab 2025-10-12 02:33:35 -07:00
jeffvli
4d12a4d6cb add release channel setting and implementation 2025-10-11 15:05:29 -07:00
Kendall Garner
fccbf83c12
bugfix: handle playlist with no tracks 2025-10-11 12:39:59 -07:00
Kendall Garner
6733047942
improve jellyfin participants 2025-10-10 19:32:11 -07:00
Kendall Garner
452803fc72
support artist art as artist background 2025-10-10 18:26:28 -07:00
Kendall Garner
4ff317eac9
fix nonexistent filter 2025-10-05 21:25:19 -07:00
Kendall Garner
306167fee3
playlist sort and refactoring 2025-10-05 19:13:35 -07:00
Kendall Garner
1cbb3e56bc
add recently released to home page, refactor home route 2025-10-05 07:51:36 -07:00
Kendall Garner
7c24f7cba4
use margin bottom for notifications component to not disable center controls 2025-10-04 07:34:48 -07:00
Evelyn Gravett
1b278cb33a
Feature: Add song and artist links to discord RPC (#1160)
* Add song and artist links to discord RPC

* use first artist name for artist link, full artist name for song link

* use first album artist for song link

* add discord rpc links setting

* simplify discord link settings

* fix setting description

* add musicbrainz links

* fix callback missing dependency

* use encodeURIComponent for lastfm links

Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com>

* split musicbrainz ids

* combine link settings

---------

Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com>
2025-10-04 03:27:59 +00:00
Kendall Garner
4a48598260
add multiple genre support for nd albums/tracks 2025-09-28 19:59:20 -07:00
Kendall Garner
6df270ba34
server add/edit refactor, allow jellyfin prefer instant mix 2025-09-28 19:19:24 -07:00
Kendall Garner
eb0ccec0bc
Remove cached queries on editing server 2025-09-28 19:10:47 -07:00
Kendall Garner
8caf898172
have default background for artist top songs 2025-09-28 17:12:34 -07:00
Kendall Garner
508013958f
ND >= 0.56.0: search songs by artist | album artist id 2025-09-27 20:00:34 -07:00
Kendall Garner
c448352ec8
fix linter error 2025-09-26 17:30:20 -07:00
Henry
e344adfeed
Add autodiscovery for Jellyfin servers (#1146)
* Add autodiscovery for Jellyfin servers

* Remove debugging aids

you didn't see anything

* Fix linter errors

* Send a discovery packet to localhost too
2025-09-26 22:53:19 +00:00
Jeff
bca4a14f2e
adjust web playback error handler (#1150) 2025-09-24 18:09:30 -07:00
Gabriele Mancini
4f38e16857
Feature: added playlist duration badge (#1130) 2025-09-23 12:45:08 -07:00
Malachi Soord
8a3edb71df
feat: add semantic selectors for now-playing media (#1138)
* feat: add semantic selectors for now-playing media

This change adds unique class names to the elements that display the currently playing media information. This makes it easier for extension developers to parse the DOM and understand what media is playing.

The following classes have been added:
- `media-player`: The main player container.
- `player-cover-art`: The cover art of the playing track.
- `song-title`: The title of the playing track.
- `song-artist`: The artist of the playing track.
- `song-album`: The album of the playing track.
- `player-state-playing`/`player-state-paused`: The state of the player.
- `elapsed-time`: The elapsed time of the playing track.
- `total-duration`: The total duration of the playing track.

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-09-23 12:44:22 -07:00
jeffvli
55e35e9b24 set default body background to #000 2025-09-22 18:24:04 -07:00