Commit Graph

2899 Commits

Author SHA1 Message Date
Yunus 71fc632501 feat: add an option to configure default share expiration (#2283)
* feat: add an option to configure default share expiration
2026-08-03 19:26:45 -07:00
Sekiryl a26b8c4839 fix: preserve pitch toggle now works for MPV backend (#2297)
* fix: preserve pitch toggle now works for MPV backend

* update docs

---------

Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com>
2026-07-31 04:51:05 +00:00
York 8b7615bebb fix: localize custom theme settings (#2299) 2026-07-31 03:58:21 +00:00
jaxi e402bd5424 fix: f11 fullscreen was completely broken on linux/windows; feat: butterchurn preset expansion + randomized preset arrows (#2280)
* added a ton of visualizers

* added f11 toggle functionality, f11 makes visualizer cover entire screen when pressed while visualizer is maximized

Bundling the additional butterchurn preset packs (extra, md1) pushed
renderer build memory past the default ~2GB Node heap on the macOS CI
runner, causing OOM crashes during the build.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 20:49:24 -07:00
jeffvli 13528eff09 add library rescan to server selector menu 2026-07-29 22:55:52 -07:00
jeffvli 81f7b42409 redesign lyrics settings form 2026-07-29 22:04:47 -07:00
jeffvli 77ea7f9c75 add and adjust some log entries 2026-07-29 21:05:54 -07:00
mekomuka 2c3c8f518f fix(web-player): unlock AudioContext on first user gesture (#2275)
The web AudioContext is created on mount, so browsers start it in a
suspended state. The existing resume() call in the async player-start
callback fires too late relative to the original click to count as a
user gesture in Chrome, so it silently fails and playback progresses
with no audio output.

Add a one-time pointerdown/keydown listener that resumes the context
on the very first user interaction on the page, synchronously within
the gesture's event handler.

Co-authored-by: Inspiractus01 <Inspiractus01@users.noreply.github.com>
2026-07-27 02:46:08 +00:00
Simon Slamka 052af7c420 Revert "feat(player): set right ctrl vol max to mpv's vol max if player==local (#2198)" (#2288)
This reverts commit ddd45ad5ba.
2026-07-26 21:51:21 +00:00
Marc Plano-Lesay 07ef323ccc Make ratings/favourites a bit more customizable (#2262)
* Replace show ratings toggle with favorite/rating controls setting

Swap `genera.showRatings` (previously a simple bool) for a
`favoriteRatingControls` enum, exposed via derived `useShowRatings` /
`useShowFavorites` hooks. Settings switch becomes a select, with a
migration to a new v32 schema mapping the old boolean forward with no
user change.

* Gate favorite controls on `favoriteRatingControls` setting

Hide the playerbar and mobile fullscreen favorite buttons and the
context-menu favorite action when the setting excludes favorites,
mirroring how ratings are already gated.

* Gate favorite controls on item cards and detail list

Drill a `showFavorite` flag through the item-card tree (mirroring
`showRating`), and gate the card/detail-list favorite badges and hover
buttons on the `favoriteRatingControls` setting.

* Gate favorite controls in detail headers and album group controls

* Keep the original `showRatings` switch and add a `showFavorites`

* Gate album header favorite hander at definition
2026-07-26 12:59:17 +00:00
jeffvli d0710f3549 fix inconsistent wrapping on list displaytype selector 2026-07-25 20:45:02 -07:00
jeffvli 315d2c54c0 normalize playerbar config designs 2026-07-23 23:47:02 -07:00
Matt Van Horn 1ab0108654 fix: keep a seek control when the waveform fails to load (#2257)
The playerbar seek/progress bar could disappear entirely after switching
tracks, recoverable only by restarting the app. The waveform component
rendered the fallback `PlayerbarSeekSlider` only while `isLoading` was
true and cleared that flag on any wavesurfer `ready` event, with no
handling for a failed or superseded load: `wavesurfer.load()` had no
`.catch()` and there was no `error` listener, so a load failure left an
empty waveform canvas and no seek control.

Track an explicit `hasError` state and render the fallback slider whenever
the waveform `isLoading || hasError`, hiding the empty canvas in that case,
so a seek control is always present. Add an `error` listener and a
`.catch()` on `load()` that ignore `AbortError` (the expected result of a
rapid track switch) and surface only real failures. A per-load
`loadStarted` guard, together with the existing cleanup, ignores `ready`/
`error` events from a superseded load so they cannot clear the loading
state for the wrong track.

Closes #2193

Co-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>
2026-07-23 22:18:58 -07:00
jeffvli 207df236a3 support sidebar player in now playing route (#2134)
- add toggle to show/hide the queue in the sidebarplayer
2026-07-23 22:16:47 -07:00
jeffvli a0bae0ffb0 autodj fixes and enhancements (#2271)
- add setting to allow duplicates
- add setting to only prefer similar sogs
- fix autodj algorithm to match by the priority order instead of incorrectly grouping when limit not reached
2026-07-23 19:51:30 -07:00
Kevin bd964cc8ed fix: fixed margin for fullscreen image (#2274) 2026-07-22 21:42:50 -07:00
jeffvli 390b231e06 fix web player resuming on queue modification (#2250)
- During queue edits, stream URL reloads briefly reported a bogus duration (~0.07s). The gapless handler treated that as near end-of-track and called .play() while the player was still paused
2026-07-21 00:29:20 -07:00
jeffvli d991d4e1b8 adjust padding on settings loading spinner 2026-07-21 00:08:18 -07:00
jeffvli cbf8037099 improve app logging
- consolidate electron-log and expand support-oriented logging
- consolidate log levels to info / trace only
- add system/server diagnostics exporter
2026-07-20 22:26:07 -07:00
jeffvli 173efa9bfd add scan listener and query invalidation on tag editor save 2026-07-19 21:03:13 -07:00
jeffvli dbd82d46cf use custom lyrics styling on search form instead of setting 2026-07-19 16:27:49 -07:00
jeffvli e4378d1bc9 fix mediasession handlers breaking after player stop event 2026-07-19 13:51:11 -07:00
jeffvli f7ae4faeb0 fix tag editor defaults to set sort tags to non-multi 2026-07-19 12:35:19 -07:00
jeffvli 749899cec0 fix inverted condition for progress scrobble after submission 2026-07-19 12:26:16 -07:00
jeffvli f9b9f9ab06 refactor periodic update check to use github releases instead of electron-builder (#2259)
- resolves an issue related to electron-builder continuing to download and install updates despite only calling checkForUpdates
- adds indicator to settings / app menu on new version found
2026-07-19 12:13:28 -07:00
jeffvli f8b611fd4c fix lint 2026-07-19 00:05:04 -07:00
jeffvli 021de2b519 fix server list accordions to use server id instead of name 2026-07-18 23:58:13 -07:00
jeffvli ea6079aae7 add indicators to app menu server selector 2026-07-18 23:55:56 -07:00
jeffvli 61eb998de1 fix session invalidation on invalid credentials (#2230) 2026-07-18 23:51:52 -07:00
jeffvli a378699b12 fix pronunciation lyrics line not syncing on toggle (#2225) 2026-07-18 23:30:48 -07:00
jeffvli 22d2ec483a switch to server on password update 2026-07-18 21:52:13 -07:00
jeffvli 4f08867fd7 hide mobile drawer auth shell 2026-07-18 21:51:46 -07:00
jeffvli 8e3d3d3ec0 properly fit server auth page on responsive width 2026-07-18 21:47:00 -07:00
jeffvli a51299e818 add logout button 2026-07-18 21:31:47 -07:00
jeffvli d960603268 clear discord rpc on player stop (#2239) 2026-07-18 21:16:51 -07:00
Louis Dalibard f152e03ae7 feat: add support for loading custom themes from files (#2218)
* feat: add support for loading custom themes from files

---------

Co-authored-by: jeffvli <jeffvictorli@gmail.com>
2026-07-18 19:27:09 -07:00
York 7cff72910e feat: improve native macOS application menu (#2242) 2026-07-17 19:20:17 -07:00
Chris Scott 75bdf60912 feat(tag-editor): add batch metadata editor with artwork support (Duplicate) (#2252)
* feat(tag-editor): add batch metadata editor with artwork support

---------

Co-authored-by: jeffvli <jeffvictorli@gmail.com>
2026-07-17 19:17:11 -07:00
jeffvli cf4556743d fix title width in title combined column 2026-07-17 18:58:17 -07:00
jeffvli 235fb4d13f fix additional instances of JoinedArtists not truncating 2026-07-17 11:10:56 -07:00
Kevin d99fe8b8c6 feat: added playlist from queue creation (#2210)
* feat: added playlist from queue creation

- added functionality to create a playlist from queue
- prefilling is done as an extra function to be api agnostic since navidrome native api for example does not offer a parameter for filling a playlist with songs on creation

#2204

* fix: fixed wrong declaration
2026-07-16 22:54:42 -07:00
jeffvli 49b8c9d08f fix invalid text wrap on title (artist) column (#2249) 2026-07-16 22:37:28 -07:00
jeffvli b22541d1d8 fix subsonic reportPlayback request chain so that starting resolves before playing (#2131) 2026-07-16 16:01:43 -07:00
jeffvli ddc7f936a8 send timestamp update after Jellyfin scrobble submission 2026-07-16 13:41:22 -07:00
jeffvli e951fa696b fix: exclude Jellyfin stop event on song change (#2243) 2026-07-16 13:30:16 -07:00
jeffvli 2eacdd485a fix incorrect lyric scroll position on resume 2026-07-15 23:06:50 -07:00
Simon Slamka ddd45ad5ba feat(player): set right ctrl vol max to mpv's vol max if player==local (#2198) 2026-07-15 22:43:43 -07:00
Damien Erambert 5e79e385d9 Support using alt+click on prev/next to jump to previous/next album in queue (#2220) 2026-07-15 22:27:40 -07:00
York 62c1ac04e4 feat: support furigana and romaji generation on web (#2232)
* feat: support furigana and romaji generation on web
2026-07-15 22:26:05 -07:00
York 763e7d5638 fix: use compilation release type label on album details (#2236) 2026-07-15 22:16:32 -07:00