jeffvli
0ac24a4165
remove lyric agent attribution display
2026-07-09 20:07:49 -07:00
jeffvli
63f6a6620d
clean up animations
2026-07-09 14:08:23 -07:00
jeffvli
c0c03bc414
properly handle settings state on lyrics follow
2026-07-09 03:59:20 -07:00
jeffvli
04258061e2
fix furigana bugged animation on highlight
2026-07-09 03:38:10 -07:00
jeffvli
19ec6e2f0a
fix romaji showing up on non-kana lines
2026-07-09 03:38:10 -07:00
jeffvli
2d363190bd
show loading spinner on refetching
2026-07-09 03:38:09 -07:00
jeffvli
df37123382
add setting for lyrics follow alignment
2026-07-09 03:37:44 -07:00
jeffvli
bdcc88cbfe
add setting for lyrics container padding
2026-07-09 02:45:13 -07:00
jeffvli
fefbf7e3e6
remove lyrics highlight on pause
2026-07-09 02:45:13 -07:00
jeffvli
032c17acf4
fix lyrics loading state
2026-07-09 02:44:49 -07:00
jeffvli
bd5cd672ef
refactor player timestamp hook with fixed interval
2026-07-09 02:44:20 -07:00
jeffvli
88b570cacb
implement OS enhanced/karaoke lyrics
2026-07-09 02:43:57 -07:00
jeffvli
ef3f3043bc
performance refactor for synchronized lyrics timestamp/status subscribers
2026-07-08 10:41:44 -07:00
jeffvli
7b5df97fa0
fix list select all hotkey ( #2195 )
2026-07-05 21:25:18 -07:00
Maurits
2ad4c58dcd
fix: startup resume-seek cancelled when shuffle is enabled ( #2203 )
...
applyStartupSeek() compared the armed target song against
getQueue().items[player.index], but player.index is a position in the
shuffled order while getQueue().items is always the default order. With
shuffle enabled the lookup resolves to the wrong song, the uniqueId
check fails, and the startup resume-seek is silently cancelled — the
track then plays from 0:00 and the progress poller overwrites the
persisted timestamp.
Use getCurrentSong() instead, which maps the index through
queue.shuffled, matching how the seek target is armed.
Fixes #2202
Co-authored-by: Maurits <WhoCarrot@users.noreply.github.com >
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-07-06 01:10:36 +00:00
Hosted Weblate
972bd22ddf
Translated using Weblate
...
Currently translated at 99.6% (1284 of 1289 strings) (Estonian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/et/
Translated using Weblate
Currently translated at 100.0% (1289 of 1289 strings) (Czech)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Co-authored-by: lorduskordus <lorduskordus@gmail.com >
Co-authored-by: rimasx <riks_12@hot.ee >
2026-07-05 18:01:22 +02:00
Hosted Weblate
e0091f22ce
Translated using Weblate
...
Currently translated at 48.0% (620 of 1289 strings) (Portuguese (Brazil))
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pt_BR/
Translated using Weblate
Currently translated at 43.8% (565 of 1289 strings) (Japanese)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ja/
Co-authored-by: Camembert <camembert1342@gmail.com >
Co-authored-by: karigane <169052233+karigane-cha@users.noreply.github.com >
2026-07-04 15:01:35 +00:00
Ahmed Alabsi
022d227d5e
perf: use crypto.getRandomValues() for higher-quality shuffle in music player ( #2181 )
...
* fix: use crypto-safe randomness in shuffle helpers
2026-07-02 01:01:34 -07:00
Hosted Weblate
31f12a39b2
Translated using Weblate
...
Currently translated at 13.8% (178 of 1289 strings) (Thai)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/th/
Translated using Weblate
Currently translated at 100.0% (1289 of 1289 strings) (Polish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/
Translated using Weblate
Currently translated at 97.0% (1251 of 1289 strings) (French)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fr/
Translated using Weblate
Currently translated at 100.0% (1289 of 1289 strings) (Spanish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translated using Weblate
Currently translated at 25.8% (333 of 1289 strings) (Chinese (Simplified Han script))
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Co-authored-by: Fordas <fordas15@gmail.com >
Co-authored-by: KosmoMoustache <kosmomoustache@users.noreply.hosted.weblate.org >
Co-authored-by: Strom.wang <811191336@qq.com >
Co-authored-by: man sun <masrton888@gmail.com >
Co-authored-by: skajmer <skajmer@protonmail.com >
2026-07-01 09:01:30 +00:00
Hosted Weblate
a6d82374dd
Translated using Weblate
...
Currently translated at 12.8% (166 of 1289 strings) (Thai)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/th/
Co-authored-by: man sun <masrton888@gmail.com >
2026-06-30 08:56:25 +02:00
Kendall Garner
42bd8d34d9
fix(sidebar): only re-expand sidebar when enabled
2026-06-29 21:06:32 -07:00
jeffvli
b397790402
additional fix for furigana/romaji lyric handlers ( #2188 )
...
- Romaji conversion joined all synced lyric lines into one string. Because the block contained kana somewhere, hasKana passed for the entire array of lyrics.
2026-06-29 20:50:13 -07:00
Hosted Weblate
7231f73ba7
Translated using Weblate
...
Currently translated at 100.0% (1289 of 1289 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 48.3% (622 of 1287 strings) (Ukrainian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/uk/
Translated using Weblate
Currently translated at 100.0% (1287 of 1287 strings) (Catalan)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ca/
Translated using Weblate
Currently translated at 100.0% (1287 of 1287 strings) (Polish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/
Translated using Weblate
Currently translated at 100.0% (1287 of 1287 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: Hosted Weblate <hosted@weblate.org >
Co-authored-by: Ondo <SparkyOndo@proton.me >
Co-authored-by: albatrays <weblate.duct925@passmail.net >
Co-authored-by: linger <linger0517@gmail.com >
Co-authored-by: skajmer <skajmer@protonmail.com >
2026-06-30 05:29:06 +02:00
jeffvli
37ada07ee2
add "stopped" playback state and event handlers
2026-06-29 20:23:46 -07:00
York
a221a84792
fix: romaji duplicate lines for non-Japanese lyrics ( #2188 )
2026-06-29 19:11:46 -07:00
Norman
aa3c9251f5
feat: album group has a config and can set the image size ( #2153 )
...
* Created a new album group configuration which includes (for now) an option to set the image size of the album group artwork.
2026-06-29 19:00:20 -07:00
Benjamin
751ec7f835
fix lyric desync due to scroll issues ( #2110 )
2026-06-29 18:50:58 -07:00
Hosted Weblate
14bad5dbd7
Translated using Weblate
...
Currently translated at 100.0% (1287 of 1287 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 69.1% (889 of 1285 strings) (Hungarian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/hu/
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Co-authored-by: Soderes Sanyi <kennex@protonmail.com >
Co-authored-by: York <goog10216922@gmail.com >
2026-06-29 07:21:14 +02:00
BlackHoleFox
94aa34f6b2
Improve Jellyfin playlist loading and modification performance times ( #2184 )
...
* Remove unneeded Fields from getPlaylistSongList
* Add optimized controller function for playlist addition duplication checks
* Remove Jellyfin People data handling
* move artist map inline
---------
Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com >
2026-06-29 05:21:04 +00:00
Kendall Garner
da445b815d
feat(genre): support sorting by track/album count
2026-06-28 19:39:32 -07:00
Tarulia
c875146779
feat: add setting for static window title ( #2183 )
2026-06-29 01:35:42 +00:00
Kendall Garner
9806d2f553
fix: require all sorts to have default value
2026-06-28 17:36:14 -07:00
Kendall Garner
18a7fd0731
disconnect rpc on discord unmount
2026-06-28 15:31:15 -07:00
Hosted Weblate
062617bb40
Translated using Weblate
...
Currently translated at 100.0% (1285 of 1285 strings) (Czech)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translated using Weblate
Currently translated at 100.0% (1285 of 1285 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% (1285 of 1285 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 >
2026-06-28 05:01:23 +00:00
York
f8ca8861fc
feat: add romaji lyrics display ( #2180 )
2026-06-26 21:07:58 -07:00
Ryan Kupka
26eea7422d
fix: recover mpv playback after the OS resumes from sleep ( #2172 )
...
mpv/ffmpeg had no network-level timeout or reconnect options, so a
network stream left open across a system sleep would block forever on
the now-dead TCP connection instead of failing or reconnecting. Since
Node-MPV's IPC commands only resolve when mpv replies, a wedged mpv
process also made quit()/restart hang indefinitely, so the only way
out was to kill the whole app.
- Add --network-timeout and ffmpeg reconnect options to mpv's default
parameters so a stalled stream fails fast instead of hanging.
- Make the quit() helper resilient to an unresponsive mpv process by
racing it against a timeout and force-killing as a fallback.
- Listen for Electron's powerMonitor 'resume' event and tell the
renderer to reload mpv, so playback recovers automatically instead
of requiring a manual app restart.
2026-06-26 19:18:27 -07:00
Hosted Weblate
21d788226c
Translated using Weblate
...
Currently translated at 100.0% (1283 of 1283 strings) (Czech)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Co-authored-by: Fjuro <fjuro@users.noreply.hosted.weblate.org >
2026-06-26 22:01:23 +02:00
Hosted Weblate
9a1bf8f4a9
Translated using Weblate
...
Currently translated at 48.0% (616 of 1283 strings) (Ukrainian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/uk/
Co-authored-by: albatrays <weblate.duct925@passmail.net >
2026-06-24 15:27:33 +02:00
Hosted Weblate
0fab3ba318
Translated using Weblate
...
Currently translated at 100.0% (1283 of 1283 strings) (Estonian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/et/
Translated using Weblate
Currently translated at 100.0% (1283 of 1283 strings) (Catalan)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ca/
Translated using Weblate
Currently translated at 100.0% (1283 of 1283 strings) (Polish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/
Co-authored-by: Ondo <SparkyOndo@proton.me >
Co-authored-by: rimasx <riks_12@hot.ee >
Co-authored-by: skajmer <skajmer@protonmail.com >
2026-06-24 10:01:26 +00:00
Norman
5ddbfcbfee
Highlight the playlist in the left panel on play ( #2025 )
...
* Fixed bad smart playlist field s
* first try to add playlist highlight
* Simplified calls
* Now works for grids too.
* Derive the playlist highlight from the currently-playing track's origin instead of a stale global field.
* addressed comments
2026-06-24 03:18:02 +00:00
Ilya Shurupov
b6519e9839
fix(sharing): copy share link to clipboard from within the user gesture ( #2135 )
...
The share URL is only known after the create-share request resolves, so the
previous navigator.clipboard.writeText() in the mutation onSuccess callback ran
outside the originating click's user activation. Firefox and Safari reject such
writes ('Clipboard write was blocked due to lack of user activation'), so the
link was never copied (and the toast still claimed success).
Issue clipboard.write() synchronously inside the submit gesture with a
ClipboardItem whose text/plain value is a promise resolving to the share URL,
which preserves the user activation while the share is created. Falls back to
writeText, and finally to the existing 'click to open' toast when the clipboard
is unavailable or blocked, with the toast text reflecting whether the copy
actually succeeded.
Co-authored-by: ilusha <ilusha.basic@gmail.com >
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-22 22:03:38 -07:00
Hosted Weblate
2103c3b8c6
Translated using Weblate
...
Currently translated at 100.0% (1283 of 1283 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% (1283 of 1283 strings) (Spanish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translated using Weblate
Currently translated at 48.1% (601 of 1249 strings) (Ukrainian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/uk/
Translated using Weblate
Currently translated at 100.0% (1249 of 1249 strings) (Chinese (Traditional Han script))
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hant/
Co-authored-by: Fordas <fordas15@gmail.com >
Co-authored-by: Hosted Weblate <hosted@weblate.org >
Co-authored-by: York <goog10216922@gmail.com >
Co-authored-by: albatrays <weblate.duct925@passmail.net >
2026-06-23 07:03:19 +02:00
York
4a7f084b59
fix: lyrics export issue when furigana is enabled ( #2175 )
...
* fix: lyrics export issue when furigana is enabled
2026-06-22 22:03:13 -07:00
jeffvli
5ef4744c44
bump electron-builder to latest, fix alpha build
2026-06-22 21:15:51 -07:00
York
ecda4ef8bc
fix: add i18n for EQ settings ( #2174 )
...
* fix: add i18n for EQ settings
* reuse common reset i18n labels
2026-06-22 14:17:50 +00:00
York
0ed68e8ebb
feat: add Japanese Furigana support to lyrics display ( #2161 )
2026-06-21 19:11:20 -07:00
jeffvli
417365f091
fix replaygain volume jump ( #1576 )
2026-06-21 18:49:43 -07:00
Hosted Weblate
ff8a21af08
Translated using Weblate
...
Currently translated at 100.0% (1247 of 1247 strings) (Estonian)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/et/
Translated using Weblate
Currently translated at 100.0% (1247 of 1247 strings) (Polish)
Translation: feishin/Translation
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/
Co-authored-by: rimasx <riks_12@hot.ee >
Co-authored-by: skajmer <skajmer@protonmail.com >
2026-06-21 12:01:22 +02:00
jeffvli
ff426bda6d
add unknown MediaType to Jellyfin playlist fetch ( #2063 )
2026-06-19 22:08:10 -07:00
jeffvli
0664b0ad02
fix lint
2026-06-19 22:07:42 -07:00