Commit Graph

4052 Commits

Author SHA1 Message Date
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 2d45968b4a change spinner component to use to LuLoader 2026-07-29 22:56:34 -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 75c43d6724 fix input clearable button styles 2026-07-29 21:13:12 -07:00
jeffvli 77ea7f9c75 add and adjust some log entries 2026-07-29 21:05:54 -07:00
Hosted Weblate fb263c5570 Translated using Weblate
Currently translated at 99.9% (1346 of 1347 strings) (Russian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ru/

Translated using Weblate

Currently translated at 100.0% (1347 of 1347 strings) (Polish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/

Co-authored-by: skajmer <skajmer@protonmail.com>
Co-authored-by: Александр Стельмах <aguhadug@gmail.com>
2026-07-28 16:01:59 +00:00
Hosted Weblate acebcdbafa Translated using Weblate
Currently translated at 99.4% (1340 of 1347 strings) (Estonian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/et/

Translated using Weblate

Currently translated at 100.0% (1347 of 1347 strings) (Italian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/

Translated using Weblate

Currently translated at 100.0% (1347 of 1347 strings) (Spanish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/

Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: Marco Ciotola <github@ciotola.dev>
Co-authored-by: rimasx <riks_12@hot.ee>
2026-07-27 14:14:53 +02:00
Hosted Weblate d10bf03322 Translated using Weblate
Currently translated at 100.0% (1347 of 1347 strings) (Czech)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/

Translated using Weblate

Currently translated at 100.0% (1347 of 1347 strings) (Chinese (Traditional Han script))
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hant/

Translated using Weblate

Currently translated at 100.0% (1345 of 1345 strings) (Russian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ru/

Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: linger <linger0517@gmail.com>
Co-authored-by: Александр Стельмах <aguhadug@gmail.com>
2026-07-27 04:46:24 +02: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
Damien Erambert f8a0544ceb Add a Window menu item that re-opens main window on Mac (#2269)
* Add a Window menu item that re-opens main window on Mac

* only rebuild menu on macos
2026-07-25 19:40:22 +00:00
Hosted Weblate 02d6a3d65e Translated using Weblate
Currently translated at 100.0% (1345 of 1345 strings) (Italian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/

Co-authored-by: Marco Ciotola <github@ciotola.dev>
2026-07-24 22:01:11 +02:00
Hosted Weblate bf07188d66 Translated using Weblate
Currently translated at 98.6% (1327 of 1345 strings) (Italian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/

Co-authored-by: Marco Ciotola <github@ciotola.dev>
2026-07-24 21:25:41 +02:00
Hosted Weblate f15efad4fd Translated using Weblate
Currently translated at 100.0% (1345 of 1345 strings) (Czech)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/

Translated using Weblate

Currently translated at 100.0% (1345 of 1345 strings) (Czech)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/

Translated using Weblate

Currently translated at 100.0% (1345 of 1345 strings) (Chinese (Traditional Han script))
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hant/

Translated using Weblate

Currently translated at 98.6% (1327 of 1345 strings) (Italian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/

Translated using Weblate

Currently translated at 100.0% (1345 of 1345 strings) (Spanish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/

Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: Marco Ciotola <github@ciotola.dev>
Co-authored-by: York <goog10216922@gmail.com>
Co-authored-by: lorduskordus <lorduskordus@gmail.com>
2026-07-24 21:11:29 +02:00
jeffvli 315d2c54c0 normalize playerbar config designs 2026-07-23 23:47:02 -07:00
Hosted Weblate 4275fc237d Translated using Weblate
Currently translated at 100.0% (1343 of 1343 strings) (Chinese (Traditional Han script))
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hant/

Co-authored-by: York <goog10216922@gmail.com>
2026-07-24 05:19:58 +00: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
Hosted Weblate 04b1f6595a Translated using Weblate
Currently translated at 99.7% (1335 of 1339 strings) (Estonian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/et/

Translated using Weblate

Currently translated at 97.4% (1305 of 1339 strings) (French)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fr/

Co-authored-by: KosmoMoustache <kosmomoustache@users.noreply.hosted.weblate.org>
Co-authored-by: rimasx <riks_12@hot.ee>
2026-07-24 04:58:42 +02:00
jeffvli bcc6edc5dc fix description/label styles to be consistent 2026-07-23 19:57:06 -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
jeffvli e0ac1c0db6 use dedicated strings for sidebar localization (#2266) 2026-07-23 18:10:31 -07:00
Kevin bd964cc8ed fix: fixed margin for fullscreen image (#2274) 2026-07-22 21:42:50 -07:00
Hosted Weblate aa0e568fb8 Translated using Weblate
Currently translated at 65.7% (881 of 1339 strings) (Italian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/

Co-authored-by: Marco Ciotola <github@ciotola.dev>
2026-07-22 18:21:42 +02:00
Hosted Weblate 423a5179c2 Translated using Weblate
Currently translated at 99.6% (1334 of 1339 strings) (Estonian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/et/

Translated using Weblate

Currently translated at 89.9% (1204 of 1339 strings) (Dutch)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/nl/

Translated using Weblate

Currently translated at 100.0% (1339 of 1339 strings) (Czech)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/

Translated using Weblate

Currently translated at 100.0% (1339 of 1339 strings) (Chinese (Traditional Han script))
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hant/

Translated using Weblate

Currently translated at 100.0% (1339 of 1339 strings) (Polish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/

Translated using Weblate

Currently translated at 100.0% (1339 of 1339 strings) (Spanish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/

Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: York <goog10216922@gmail.com>
Co-authored-by: caviaz <sverrebesteman@gmail.com>
Co-authored-by: rimasx <riks_12@hot.ee>
Co-authored-by: skajmer <skajmer@protonmail.com>
2026-07-22 06:01:55 +00: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
Hosted Weblate 7394159938 Update translation files
Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/
Translation: feishin/Translation
2026-07-21 07:26:25 +02: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
Hosted Weblate 99258c92fc Translated using Weblate
Currently translated at 100.0% (1338 of 1338 strings) (Catalan)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ca/

Translated using Weblate

Currently translated at 89.8% (1202 of 1338 strings) (Dutch)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/nl/

Translated using Weblate

Currently translated at 100.0% (1338 of 1338 strings) (Czech)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/

Translated using Weblate

Currently translated at 100.0% (1338 of 1338 strings) (Chinese (Traditional Han script))
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hant/

Translated using Weblate

Currently translated at 100.0% (1338 of 1338 strings) (Russian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ru/

Translated using Weblate

Currently translated at 100.0% (1338 of 1338 strings) (Polish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/

Translated using Weblate

Currently translated at 97.6% (1307 of 1338 strings) (French)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fr/

Translated using Weblate

Currently translated at 100.0% (1338 of 1338 strings) (Spanish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/

Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: KosmoMoustache <kosmomoustache@users.noreply.hosted.weblate.org>
Co-authored-by: Ondo <SparkyOndo@proton.me>
Co-authored-by: Sverre Besteman <caviaz@proton.me>
Co-authored-by: York <goog10216922@gmail.com>
Co-authored-by: skajmer <skajmer@protonmail.com>
Co-authored-by: Александр Стельмах <aguhadug@gmail.com>
2026-07-21 07:01:40 +02:00
jeffvli 4c8894259c add Latvian translation locale 2026-07-20 02:15:49 -07:00
Hosted Weblate ac0a24f008 Translated using Weblate
Currently translated at 96.4% (1287 of 1334 strings) (Latvian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/lv/

Translated using Weblate

Currently translated at 100.0% (1334 of 1334 strings) (Czech)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/

Translated using Weblate

Currently translated at 100.0% (1334 of 1334 strings) (Chinese (Traditional Han script))
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hant/

Translated using Weblate

Currently translated at 100.0% (1334 of 1334 strings) (Russian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ru/

Translated using Weblate

Currently translated at 100.0% (1334 of 1334 strings) (Spanish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/

Translated using Weblate

Currently translated at 43.7% (584 of 1334 strings) (Japanese)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ja/

Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: York <goog10216922@gmail.com>
Co-authored-by: karigane <169052233+karigane-cha@users.noreply.github.com>
Co-authored-by: Александр Стельмах <aguhadug@gmail.com>
2026-07-20 04:13:57 +00:00
jeffvli 14625a9ef6 fix tag editor key deletion 2026-07-19 21:13:22 -07:00
jeffvli 173efa9bfd add scan listener and query invalidation on tag editor save 2026-07-19 21:03:13 -07:00
jeffvli e62242824d update to v1.15.1 v1.15.1 2026-07-19 16:31:07 -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 v1.15.0 2026-07-19 00:05:04 -07:00
jeffvli 59d140cf90 update to v1.15.0 2026-07-18 23:59:21 -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