Currently translated at 100.0% (714 of 714 strings)
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (714 of 714 strings)
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (710 of 710 strings)
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (706 of 706 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: 無情天 <kofzhanganguo@126.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translation: feishin/Translation
Currently translated at 100.0% (706 of 706 strings)
Translated using Weblate (French)
Currently translated at 100.0% (699 of 699 strings)
Translated using Weblate (French)
Currently translated at 100.0% (699 of 699 strings)
Translated using Weblate (French)
Currently translated at 100.0% (699 of 699 strings)
Co-authored-by: Dylan MONTIGAUD <dylanmontigaud17@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fr/
Translation: feishin/Translation
Currently translated at 100.0% (714 of 714 strings)
Translated using Weblate (Spanish)
Currently translated at 99.8% (709 of 710 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (706 of 706 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (705 of 705 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (701 of 701 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (699 of 699 strings)
Co-authored-by: Aitor Astorga <a.astorga.sdv@protonmail.com>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: jaime-grj <weblate.4ljj9@aleeas.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translation: feishin/Translation
Currently translated at 100.0% (710 of 710 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (706 of 706 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (705 of 705 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (701 of 701 strings)
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translation: feishin/Translation
Currently translated at 73.3% (521 of 710 strings)
Translated using Weblate (Basque)
Currently translated at 57.7% (407 of 705 strings)
Translated using Weblate (Basque)
Currently translated at 44.1% (311 of 705 strings)
Translated using Weblate (Basque)
Currently translated at 41.7% (293 of 701 strings)
Translated using Weblate (Basque)
Currently translated at 15.5% (109 of 699 strings)
Translated using Weblate (Basque)
Currently translated at 11.1% (78 of 699 strings)
Translated using Weblate (Basque)
Currently translated at 7.8% (55 of 699 strings)
Added translation using Weblate (Basque)
Co-authored-by: Aitor Astorga <a.astorga.sdv@protonmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/eu/
Translation: feishin/Translation
* add PWA to web app
* Fix sw.js not registering and lint
* Change sw and manifest to live at root
* Revert "Change sw and manifest to live at root"
This reverts commit 4c27d92467.
* 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>
* Add autodiscovery for Jellyfin servers
* Remove debugging aids
you didn't see anything
* Fix linter errors
* Send a discovery packet to localhost too
* 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>
* initial client-side only sort for all playlists
* allow reordering jellyfin (assume it works properly) and navidrome
* on playlist page, add to queue by sort order
Currently translated at 100.0% (699 of 699 strings)
Translated using Weblate (Slovak)
Currently translated at 81.2% (568 of 699 strings)
Translated using Weblate (Slovak)
Currently translated at 78.3% (548 of 699 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: peter cerny <posli.to.semka@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/sk/
Translation: feishin/Translation
Currently translated at 100.0% (694 of 694 strings)
Translated using Weblate (Catalan)
Currently translated at 100.0% (685 of 685 strings)
Translated using Weblate (Catalan)
Currently translated at 95.0% (651 of 685 strings)
Translated using Weblate (Catalan)
Currently translated at 88.7% (608 of 685 strings)
Translated using Weblate (Catalan)
Currently translated at 88.7% (608 of 685 strings)
Translated using Weblate (Catalan)
Currently translated at 49.0% (336 of 685 strings)
Translated using Weblate (Catalan)
Currently translated at 49.0% (336 of 685 strings)
Update translation files
Updated by "Remove blank strings" hook in Weblate.
Translated using Weblate (Catalan)
Currently translated at 47.4% (325 of 685 strings)
Added translation using Weblate (Catalan)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Isaac Miró <isaac.miro.garcia@gmail.com>
Co-authored-by: Ondo <SparkyOndo@proton.me>
Co-authored-by: Àlex Bravo <alexbravobosch@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ca/
Translation: feishin/Translation
Currently translated at 100.0% (685 of 685 strings)
Translated using Weblate (Turkish)
Currently translated at 100.0% (685 of 685 strings)
Translated using Weblate (Turkish)
Currently translated at 54.8% (376 of 685 strings)
Translated using Weblate (Turkish)
Currently translated at 51.5% (353 of 685 strings)
Translated using Weblate (Turkish)
Currently translated at 31.5% (216 of 685 strings)
Added translation using Weblate (Turkish)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Mücahit Kaya <kaya-mucahit@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/tr/
Translation: feishin/Translation
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 74.8% (509 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 9.1% (62 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 9.1% (62 of 680 strings)
Translated using Weblate (Slovenian)
Currently translated at 9.1% (62 of 680 strings)
Added translation using Weblate (Slovenian)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Martin Stojanoski <martin.stojanoski2000@gmail.com>
Co-authored-by: mytja <mamnju21@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/sl/
Translation: feishin/Translation
Currently translated at 100.0% (680 of 680 strings)
Translated using Weblate (Italian)
Currently translated at 100.0% (680 of 680 strings)
Translated using Weblate (Italian)
Currently translated at 100.0% (680 of 680 strings)
Translated using Weblate (Italian)
Currently translated at 100.0% (680 of 680 strings)
Translated using Weblate (Italian)
Currently translated at 100.0% (680 of 680 strings)
Co-authored-by: Daivy <reale805@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/
Translation: feishin/Translation
Resolves#985.
Currently, attempting to click on one of the `set rating` buttons is a no-op.
This is because it is considered "outside" the `ContextMenu`, which immediately closes it.
Pass in the same merged ref into the body of the `DropDown` component so that it is also treated as "inside".
- Jellyfin will use `ContributingArtistsId` (compilation), `AlbumArtistIds` (compilation is false), or `ArtistIds` (unspecified; all)
- Jellyfin can filter by compilation _only_ on the artist discography page
- Navidrome album filter fix for `defaultValue` display and prevent showing `tagQuery` 0 when querying
- Subsonic can filter by one or more artists in the album page. Sort is also applied on these items
- Bump genre/tag cache/stale time to 2/1 minutes
- Fix various cases where the album filter would display as active when it wasn't
- Use `compilation=false` for Navidrome recent releases with artist credit
- Add `YesNoSelect` (yes, no, undefined) for `favorite` for Navidrome/Jellyfin `album`/`track`, and Navidrome `compilation`
- Fix folderButton translation
Currently translated at 100.0% (680 of 680 strings)
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (680 of 680 strings)
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (676 of 676 strings)
Co-authored-by: ENDzZ <godzmichael@outlook.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: 無情天 <kofzhanganguo@126.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translation: feishin/Translation
Currently translated at 100.0% (680 of 680 strings)
Translated using Weblate (Finnish)
Currently translated at 100.0% (680 of 680 strings)
Translated using Weblate (Finnish)
Currently translated at 100.0% (680 of 680 strings)
Co-authored-by: ENDzZ <godzmichael@outlook.com>
Co-authored-by: jonoafi <joona@jonottaa.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fi/
Translation: feishin/Translation
Currently translated at 100.0% (680 of 680 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (680 of 680 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (676 of 676 strings)
Co-authored-by: ENDzZ <godzmichael@outlook.com>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translation: feishin/Translation
Currently translated at 100.0% (680 of 680 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (680 of 680 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (676 of 676 strings)
Co-authored-by: ENDzZ <godzmichael@outlook.com>
Co-authored-by: Fjuro <git@alius.cz>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translation: feishin/Translation
- Jellyfin: Uses `/items/filters` to get list of boolean tags. Notably, does not use this same filter for genres. Separate filter for song/album
- Navidrome: Uses `/api/tags`, which appears to be album-level as multiple independent selects. Same filter for song/album
- Parses `tags` for Navidrome (mapping string: string[])
- Parses `Tags` (and fetches for it) for Jellyfin (map a string to empty, and display as a bool)
- Clean parsing of participants for Navidrome/Subsonic
- Only show `People` for Jellyfin, not clickable
Currently translated at 100.0% (657 of 657 strings)
Translated using Weblate (Finnish)
Currently translated at 77.3% (508 of 657 strings)
Translated using Weblate (Finnish)
Currently translated at 69.2% (455 of 657 strings)
Translated using Weblate (Finnish)
Currently translated at 64.9% (427 of 657 strings)
Translated using Weblate (Finnish)
Currently translated at 64.9% (427 of 657 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Lunya <Lunya2@protonmail.com>
Co-authored-by: Ricky Tigg <ricky.tigg@gmail.com>
Co-authored-by: jonoafi <joona@jonottaa.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fi/
Translation: feishin/Translation
Currently translated at 47.4% (312 of 657 strings)
Translated using Weblate (Norwegian Bokmål)
Currently translated at 41.0% (270 of 657 strings)
Translated using Weblate (Norwegian Bokmål)
Currently translated at 30.2% (199 of 657 strings)
Translated using Weblate (Norwegian Bokmål)
Currently translated at 20.2% (133 of 657 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: klodrik <klodrik@zoominn.no>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/nb_NO/
Translation: feishin/Translation
Currently translated at 64.6% (425 of 657 strings)
Translated using Weblate (Persian)
Currently translated at 62.7% (412 of 657 strings)
Translated using Weblate (Persian)
Currently translated at 39.2% (258 of 657 strings)
Co-authored-by: Hadi <xhopeter@proton.me>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fa/
Translation: feishin/Translation
Currently translated at 100.0% (657 of 657 strings)
Translated using Weblate (Indonesian)
Currently translated at 6.0% (40 of 657 strings)
Added translation using Weblate (Indonesian)
Co-authored-by: Fadilah Riczky <friczky@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/id/
Translation: feishin/Translation
* Add play button to song table album cover, like it is in grid
* Fix: play button caused error for albums and artists tables
* Fix: play button caused error for some other tables
Currently translated at 100.0% (634 of 634 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (632 of 632 strings)
Translated using Weblate (Spanish)
Currently translated at 99.8% (631 of 632 strings)
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translation: feishin/Translation
Currently translated at 100.0% (634 of 634 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (632 of 632 strings)
Translated using Weblate (Czech)
Currently translated at 99.6% (630 of 632 strings)
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translation: feishin/Translation
* add web visualizer
* fallback to simple model
* less samples, hopefully more efficient
* Use audiomotion analyzer
- Note: fixed to 4.1.1 because 4.2.0 uses esm which breaks in the current workflow...
* revert publish changes
* r2
* don't massively change package.json
* lazy
Currently translated at 100.0% (630 of 630 strings)
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (630 of 630 strings)
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (630 of 630 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (610 of 610 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (595 of 595 strings)
Co-authored-by: ENDzZ <godzmichael@outlook.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Shawn <xiaxinx@gmail.com>
Co-authored-by: 無情天 <kofzhanganguo@126.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translation: feishin/Translation
Currently translated at 100.0% (630 of 630 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (622 of 622 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (612 of 612 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (610 of 610 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (604 of 604 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (602 of 602 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (602 of 602 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (602 of 602 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (599 of 599 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (597 of 597 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (595 of 595 strings)
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translation: feishin/Translation
Currently translated at 40.1% (245 of 610 strings)
Translated using Weblate (Dutch)
Currently translated at 40.1% (245 of 610 strings)
Translated using Weblate (Dutch)
Currently translated at 40.0% (244 of 610 strings)
Translated using Weblate (Dutch)
Currently translated at 40.7% (244 of 599 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Idris Saklou <idrissaklou@hotmail.com>
Co-authored-by: Joren Vansteenkiste <vansteenkiste.joren@telenet.be>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/nl/
Translation: feishin/Translation
Currently translated at 100.0% (630 of 630 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (621 of 621 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (612 of 612 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (610 of 610 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (604 of 604 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (599 of 599 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (595 of 595 strings)
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translation: feishin/Translation
* [scuffed bugfix]: Update table rating/favorite when updated anywhere else
Modify player store to have temporary state for favorite/rating update
Add effect handler for `virtual-table` to update rating/favorite for players
Note that this does not handle song grid view.
Using a similar handler for gird view did not work, as it appeared to result in inconsistent state.
Finally, this is probably not the optimal solution.
Performance appears fine for ~20k items, but no guarantees.
* restore should update song
* update song rating/favorite/played everywhere except playlist
* special rule for playlists
* use iterator instead
* Album blur, allow clicking the playerbar to toggle the player
* Fix stopProporagion, sync package with upsteam, update translation
* recommit my existing changes
* Update default albumBackgroundBlur to 6
* according to git this commit resets the package files
* merge with our fork because pyx forgot to add it
* try adding a setting
* change the playerbar animation
* make the animation quicker bc its choppy
* change playerbar to use a bool instead
* requested opacity fix
* Refactor classes to use clsx
---------
Co-authored-by: iiPython <ben@iipython.dev>
Co-authored-by: Jeff <42182408+jeffvli@users.noreply.github.com>
Currently translated at 100.0% (593 of 593 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (591 of 591 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (586 of 586 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (586 of 586 strings)
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translation: feishin/Translation
Currently translated at 100.0% (593 of 593 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (591 of 591 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (586 of 586 strings)
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translation: feishin/Translation
Currently translated at 97.2% (575 of 591 strings)
Translated using Weblate (Russian)
Currently translated at 97.2% (575 of 591 strings)
Translated using Weblate (Russian)
Currently translated at 95.0% (562 of 591 strings)
Translated using Weblate (Russian)
Currently translated at 95.0% (562 of 591 strings)
Translated using Weblate (Russian)
Currently translated at 70.7% (418 of 591 strings)
Translated using Weblate (Russian)
Currently translated at 70.7% (418 of 591 strings)
Co-authored-by: Blueberry <igory.ygr200@gmail.com>
Co-authored-by: Eugeniy <zamelane@vk.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: ShaDream <mogilnikovshadream@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/ru/
Translation: feishin/Translation
Allow multiple sessions from the same user with different instances.
Instead of sending a hard-coded string, send a randomly generated
string `deviceId`, which already exists and is created for each
new installation.
Currently translated at 100.0% (586 of 586 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: HanaO00 <lwin24452@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: KosmoMoustache <KosmoMoustache@users.noreply.hosted.weblate.org>
Co-authored-by: Leonardo Pizio <pizio.leonardo@gmail.com>
Co-authored-by: Mistify <fabianszafranski@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: 無情天 <kofzhanganguo@126.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fr/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translation: feishin/Translation
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: HanaO00 <lwin24452@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: KosmoMoustache <KosmoMoustache@users.noreply.hosted.weblate.org>
Co-authored-by: Leonardo Pizio <pizio.leonardo@gmail.com>
Co-authored-by: Mistify <fabianszafranski@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: 無情天 <kofzhanganguo@126.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fr/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translation: feishin/Translation
Currently translated at 100.0% (586 of 586 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: HanaO00 <lwin24452@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: KosmoMoustache <KosmoMoustache@users.noreply.hosted.weblate.org>
Co-authored-by: Leonardo Pizio <pizio.leonardo@gmail.com>
Co-authored-by: Mistify <fabianszafranski@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: 無情天 <kofzhanganguo@126.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fr/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translation: feishin/Translation
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: HanaO00 <lwin24452@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: KosmoMoustache <KosmoMoustache@users.noreply.hosted.weblate.org>
Co-authored-by: Leonardo Pizio <pizio.leonardo@gmail.com>
Co-authored-by: Mistify <fabianszafranski@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: 無情天 <kofzhanganguo@126.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fr/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translation: feishin/Translation
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: HanaO00 <lwin24452@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: KosmoMoustache <KosmoMoustache@users.noreply.hosted.weblate.org>
Co-authored-by: Leonardo Pizio <pizio.leonardo@gmail.com>
Co-authored-by: Mistify <fabianszafranski@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: 無情天 <kofzhanganguo@126.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fr/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translation: feishin/Translation
Currently translated at 100.0% (586 of 586 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (525 of 585 strings)
Translated using Weblate (French)
Currently translated at 100.0% (570 of 570 strings)
Translated using Weblate (French)
Currently translated at 100.0% (559 of 559 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Spanish)
Currently translated at 100.0% (585 of 585 strings)
Translated using Weblate (Italian)
Currently translated at 98.6% (576 of 584 strings)
Translated using Weblate (Polish)
Currently translated at 99.8% (565 of 566 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (585 of 585 strings)
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: HanaO00 <lwin24452@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: KosmoMoustache <KosmoMoustache@users.noreply.hosted.weblate.org>
Co-authored-by: Leonardo Pizio <pizio.leonardo@gmail.com>
Co-authored-by: Mistify <fabianszafranski@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Co-authored-by: 無情天 <kofzhanganguo@126.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fr/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translation: feishin/Translation
* [bugfix]: Handle top-level songs for Jellyfin
If a song is at the top level of a music folder, Jellyfin will not
group that into an album (See https://jellyfin.org/docs/general/server/media/music/).
This PR introduces a few changes:
- Gives tracks with no album ID a special route (`/dummy/${id}`)
- Gives a new route for dummy albums, warning about the error. This is designed to look _like_ the album detail page
* `are are` > `are`
* revert name changes
- mpris-service: migrate to @jellybrick/mpris-service, which has upgraded dependencies and uses class
- i18next-parser: 6 -> 8. This requires a small change to i18next-parser.config.js
* add share item feature
* take care of (mostly) everything
* bugfixes
* allow clicking on notification to open url
* readd the missing modal after router migration
* remove unnecessary extension
---------
Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com>
* [enhancement]: Support toggling Album/Track view for gneres
The _primary_ purpose of this PR is to enable viewing tracks OR albums for genres.
This has a few requirements:
1. Ability to set default route for genres, **except** when already on song/album page
2. Ability to toggle between album and genre view
3. Fixed refresh for genre ID
Additionally, there was some refactoring:
- Since the *-list-headers had very similar functions for search, export that as a hook instead
* also use hook for album artist
* support switching albumartist tracks/albums
* remove toggle on song/album list, simplify logic
- Previously, the search page would render initial page in one order, but search itself would be different order
This is resolved by having both virtual-table and search-header using listStoreKey
- When double clicking, now enqueue all the songs using the same sort
- Reset the search when clearing
Resolves#536.
With the previous implementation, next/previous would first update
the current queue and then call next/previous. However, since these were
asynchronous calls it was very likely that the second calls would fail
(and a test of adding delay showed that it actually caused a double skip).
This PR resolves this by just removing the prev/next.
Small other fixes:
- setQueue + pause -> setQueue(..., true)
- make MPV and web player have the same behavior for (pause/stop) where appropriate
Currently translated at 100.0% (549 of 549 strings)
Update translation files
Updated by "Cleanup translation files" hook in Weblate.
Translated using Weblate (Czech)
Currently translated at 100.0% (519 of 519 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (519 of 519 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (519 of 519 strings)
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translation: feishin/Translation
Currently translated at 98.5% (548 of 556 strings)
Translated using Weblate (German)
Currently translated at 98.5% (548 of 556 strings)
Translated using Weblate (German)
Currently translated at 98.5% (548 of 556 strings)
Translated using Weblate (German)
Currently translated at 93.3% (519 of 556 strings)
Translated using Weblate (German)
Currently translated at 93.3% (519 of 556 strings)
Translated using Weblate (German)
Currently translated at 92.2% (513 of 556 strings)
Translated using Weblate (German)
Currently translated at 92.2% (513 of 556 strings)
Translated using Weblate (German)
Currently translated at 91.5% (509 of 556 strings)
Translated using Weblate (German)
Currently translated at 91.5% (509 of 556 strings)
Translated using Weblate (German)
Currently translated at 91.1% (507 of 556 strings)
Translated using Weblate (German)
Currently translated at 91.1% (507 of 556 strings)
Update translation files
Updated by "Cleanup translation files" hook in Weblate.
Translated using Weblate (German)
Currently translated at 89.9% (467 of 519 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Lokke <accounts.lokke@googlemail.com>
Co-authored-by: Maik <maikguenes2003@gmail.com>
Co-authored-by: Rudi Mentaire <stoertebecker@byom.de>
Co-authored-by: full name <hosted-weblate.5w160@dralias.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/de/
Translation: feishin/Translation
- Actually make serverfeatures partial
- Navidrome: only set multiple structured lyrics if extension exists
- Navidrome/Subsonic: minor type checking of OS extension (Navidrome implementation detail)
- Jellyfin: add separate knob for lyrics. Note, this should also probably be behind some version check...
* Add an option for a dynamic background image in the fullscreen player
* Center the background image and fix some more bugs
* More cleaning up the background image
* Add option for customizable blur amount
* Fix missing translation key for image blur
* Fix dynamic image shifting when player is opened
* Hide image blur size config if dynamic background is disabled
---------
Co-authored-by: Jeff <42182408+jeffvli@users.noreply.github.com>
* fix carousel, full screen metadata improvements
* Add missing mapped keys on multiple artist
* Remove bg opacity on metadata section
* Improve visibility of currently playing song
---------
Co-authored-by: jeffvli <jeffvictorli@gmail.com>
* Moved build to docker stage.
* Do not copy node_modules to the docker image
* Optimize Docker builds
* Lock a predefined server with enviroment variables
* Added a example docker compose file
* Removed useless layer
* Fix error with empty server type
* pass process via preload, use file, strict server check
* remove duplicate content-type
* update readme, docker compose
* bugfix: server lock false, not jellyfin
* fix preload type definition
* fix docker, web server lock check
---------
Co-authored-by: Kendall Garner <17521368+kgarner7@users.noreply.github.com>
Bumps the npm_and_yarn group with 1 update in the /. directory: [ip](https://github.com/indutny/node-ip).
Updates `ip` from 1.1.5 to 1.1.9
- [Commits](https://github.com/indutny/node-ip/compare/v1.1.5...v1.1.9)
---
updated-dependencies:
- dependency-name: ip
dependency-type: indirect
dependency-group: npm_and_yarn-security-group
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Resolves#50. Adds a new set of components for fetching similar songs
from the current playing song. For Jellyfin, use the `/items/{itemId}/similar`
endpoint (may not work well for small libraries), and for Navidrome/Subsonic
use `getSimilarSongs`. _In theory_, this component can be used to get similar
songs anywhere.
Resolves#403.
This PR introduces a startup check for Navidrome that tries a simple API request (/songs) before loading homepage.
If the check fails, Navidrome API will fallback to trying saved password (if available).
Notes:
- It might also be worthwhile to do a periodic poll?
* Add customizable resolution for the fullscreen player image
---------
Co-authored-by: iiPython <ben@iipython.dev>
Co-authored-by: Benjamin <iipython@proton.me>
Supports running Feishin solely using web audio (useful for clients with problems with MPV).
Also moves save/restore queue to utils, as MPV object is now optional
* Add a button size setting
* Reduce setting size and add px suffix
* Looks like I don't need || inside of control-settings
* Update translation
* Bump settings version to 7
* [bugfix]: Fix repeated track scrobbling
This commit fixes scrobbling tracks that are repeated in the queue (either due
to a REPEAT_ONE or just enqueued multiple times). There are two extra cases:
1. The current player changes. The player alternates from 1 -> 2 -> 1 whenever playback
finishes normally, so this is a sort of epoch that can be used to detect both repeat one
and track being enqueued multiple times.
2. The current index changes. The player gets set back to 1 in a variety of cases (most often
previous/next), so the check in (1) is not enough. However, the index changing will help identify
that this is a new song.
* use unique id instead
* [enhancement]: support clearing query and http cache
- Adds the ability to invalidate all queries (useful for forcing refresh, and clearing lyrics which are cached forever)
- [Desktop only] adds the ability to clear the Electron HTTP cache (e.g. cached images)
* use clearer language
* move cache settings to general
Two bugs addressed in response to Safari changes:
1. Only handle `onEnded` for real streams, preventing `autoNext()` spam when the last track finishes
2. `.play()` is not necessarily a safe operation (if empty wave was started, can cause exception later). Catch this exception and discard it. This also only occurred when playing the last track
The prior code used `form.addToPlaylist`, not `.success`. Also fixes English pluralization and
uses the correct `entity.track` as opposed to `entity.song` for other languages (I am not sure
if the en syntax could be applied to other languages, so I will just leave pluralization as-is
for now).
Currently translated at 35.8% (186 of 519 strings)
Translated using Weblate (Dutch)
Currently translated at 32.3% (168 of 519 strings)
Translated using Weblate (Dutch)
Currently translated at 15.2% (79 of 519 strings)
Added translation using Weblate (Dutch)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Idris Saklou <idrissaklou@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/nl/
Translation: feishin/Translation
Currently translated at 94.9% (492 of 518 strings)
Translated using Weblate (French)
Currently translated at 94.2% (488 of 518 strings)
Translated using Weblate (French)
Currently translated at 94.2% (488 of 518 strings)
Translated using Weblate (French)
Currently translated at 90.3% (468 of 518 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: KosmoMoustache <KosmoMoustache@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fr/
Translation: feishin/Translation
Currently translated at 100.0% (518 of 518 strings)
Translated using Weblate (Czech)
Currently translated at 100.0% (518 of 518 strings)
Added translation using Weblate (Czech)
Co-authored-by: Fjuro <ifjuro@proton.me>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/cs/
Translation: feishin/Translation
Currently translated at 87.0% (451 of 518 strings)
Translated using Weblate (German)
Currently translated at 87.0% (451 of 518 strings)
Translated using Weblate (German)
Currently translated at 62.7% (325 of 518 strings)
Translated using Weblate (German)
Currently translated at 62.7% (325 of 518 strings)
Translated using Weblate (German)
Currently translated at 59.6% (309 of 518 strings)
Translated using Weblate (German)
Currently translated at 59.6% (309 of 518 strings)
Translated using Weblate (German)
Currently translated at 56.9% (295 of 518 strings)
Translated using Weblate (German)
Currently translated at 56.9% (295 of 518 strings)
Translated using Weblate (German)
Currently translated at 55.4% (287 of 518 strings)
Translated using Weblate (German)
Currently translated at 55.4% (287 of 518 strings)
Translated using Weblate (German)
Currently translated at 53.8% (279 of 518 strings)
Translated using Weblate (German)
Currently translated at 53.8% (279 of 518 strings)
Translated using Weblate (German)
Currently translated at 1.9% (10 of 518 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kobayashi <kobayashi90@protonmail.ch>
Co-authored-by: Rudi Mentaire <stoertebecker@byom.de>
Co-authored-by: ThetaDev <t.testboy@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/de/
Translation: feishin/Translation
Currently translated at 23.5% (122 of 518 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 22.5% (117 of 518 strings)
Translated using Weblate (Portuguese (Brazil))
Currently translated at 13.3% (69 of 518 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Rafael Vieira <rafaelvieiras@pm.me>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pt_BR/
Translation: feishin/Translation
Currently translated at 100.0% (518 of 518 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (518 of 518 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 99.8% (517 of 518 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (518 of 518 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 95.5% (495 of 518 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 92.8% (481 of 518 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 91.5% (474 of 518 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.7% (465 of 518 strings)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kaiyang Wu <self@origincode.me>
Co-authored-by: kare-Udon <laoliu735@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translation: feishin/Translation
Updated by "Remove blank strings" hook in Weblate.
Translated using Weblate (Chinese (Simplified))
Currently translated at 89.5% (464 of 518 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 56.7% (294 of 518 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 51.9% (269 of 518 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 51.1% (265 of 518 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 52.0% (265 of 509 strings)
Co-authored-by: Darwin <daerwendeshu@outlook.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: kare-Udon <laoliu735@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translation: feishin/Translation
Currently translated at 100.0% (518 of 518 strings)
Translated using Weblate (Spanish)
Currently translated at 99.8% (517 of 518 strings)
Translated using Weblate (Spanish)
Currently translated at 99.2% (514 of 518 strings)
Translated using Weblate (Spanish)
Currently translated at 88.6% (459 of 518 strings)
Translated using Weblate (Spanish)
Currently translated at 88.4% (458 of 518 strings)
Translated using Weblate (Spanish)
Currently translated at 88.4% (458 of 518 strings)
Co-authored-by: Fordas <fordas15@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jeff <jeffvictorli@gmail.com>
Co-authored-by: gallegonovato <fran-carro@hotmail.es>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/es/
Translation: feishin/Translation
Currently translated at 94.2% (488 of 518 strings)
Translated using Weblate (Italian)
Currently translated at 5.5% (29 of 518 strings)
Translated using Weblate (Italian)
Currently translated at 5.0% (26 of 518 strings)
Translated using Weblate (Italian)
Currently translated at 4.2% (22 of 518 strings)
Added translation using Weblate (Italian)
Co-authored-by: Aurora <arci@anche.no>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/it/
Translation: feishin/Translation
Currently translated at 98.8% (512 of 518 strings)
Translated using Weblate (Polish)
Currently translated at 83.2% (431 of 518 strings)
Translated using Weblate (Polish)
Currently translated at 83.2% (431 of 518 strings)
Translated using Weblate (Polish)
Currently translated at 76.2% (395 of 518 strings)
Translated using Weblate (Polish)
Currently translated at 74.6% (380 of 509 strings)
Translated using Weblate (Polish)
Currently translated at 46.5% (237 of 509 strings)
Co-authored-by: 7Adrian <7adrian.mail@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jeff <jeffvictorli@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/pl/
Translation: feishin/Translation
Updated by "Remove blank strings" hook in Weblate.
Translated using Weblate (Chinese (Simplified))
Currently translated at 51.7% (263 of 508 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 51.7% (263 of 508 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 51.7% (263 of 508 strings)
Translated using Weblate (Chinese (Simplified))
Currently translated at 15.7% (80 of 508 strings)
Added translation using Weblate (Chinese (Simplified))
Co-authored-by: Darwin <daerwendeshu@outlook.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: ken <kenxu2022@gmail.com>
Co-authored-by: 無情天 <kofzhanganguo@126.com>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/zh_Hans/
Translation: feishin/Translation
Currently translated at 67.9% (345 of 508 strings)
Translated using Weblate (French)
Currently translated at 66.9% (340 of 508 strings)
Translated using Weblate (French)
Currently translated at 50.0% (254 of 508 strings)
Translated using Weblate (French)
Currently translated at 49.6% (252 of 508 strings)
Update translation files
Updated by "Remove blank strings" hook in Weblate.
Translated using Weblate (French)
Currently translated at 49.2% (250 of 508 strings)
Added translation using Weblate (French)
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: KosmoMoustache <hosted.weblate.org@kosmo.ovh>
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/
Translate-URL: https://hosted.weblate.org/projects/feishin/translation/fr/
Translation: feishin/Translation
* [bugfix/feature]: Improve ratings
Fix: add preventDefault/stopPropagation to prevent scrolling to top in queue
Feat: instead of double click for clear, click on same value
* initial idea for playback rate
* Add transparency to dropdown
* Move playback speed component to right controls
* Set mpv speed on startup
---------
Co-authored-by: jeffvli <jeffvictorli@gmail.com>
* [Feature] Support changing accent/primary color
- adds color picker to settings with five swatches (blue default, yellow green and red imported from sonixd, purple new)
- changing color will change the appropriate css variable
* Remove hover styles that use an alternate primary
---------
Co-authored-by: Jeff <42182408+jeffvli@users.noreply.github.com>
Co-authored-by: jeffvli <jeffvictorli@gmail.com>
* [feature]: Support using system fonts
Uses the **experimental** queryLocalFonts API, when prompted, to get the fonts and do CSS.
Resolves#270 and #288 (by proxy)
Caveats/notes:
- This is experimental, and is only supported by Chrome/Chromium/Edgeium (see https://caniuse.com/?search=querylocalfonts)
- As far as I can tell, the only way to dynamically change the font (shown in https://wicg.github.io/local-font-access/#example-style-with-local-fonts) was by DOM manipulation; css variables did not seem to work
- This shows **all** fonts, including their variants (bold/italic/etc); given that the style names could be localized, not sure of a way to parse this (on my system, for instance, I had 859 different combinations)
- I made fonts a separate top-level setting because it was easier to manipulate without causing as many rerenders; feel free to put that back
* add permission chec
* add electron magic to support custom font
* restrict content types
* [bugfix]: fix queue offset when removing tracks
* Fix song index numbers when removing songs
---------
Co-authored-by: jeffvli <jeffvictorli@gmail.com>
* add more emphasis to current song
* add css indicator (rivolumelineup)
* don't use absolute position, support album track number
* Respect order of set-queue function (fix race condition)
* Fix table row actions button on album detail and play queue
* Fix album detail table customizations
* Bump to v0.4.1
* Fix opacity mask for unsynced lyrics container
* Separate sidebar icons to new component
- Fixes react render issue
* Add app focus hook
* Remove css play image
* Add player status as cell refresh condition for queue
* Add current song images
* Add current song styles for all song tables
* Revert row index cell width
* Remove animated svg on browser
---------
Co-authored-by: jeffvli <jeffvictorli@gmail.com>
Co-authored-by: Jeff <42182408+jeffvli@users.noreply.github.com>
* In the fullscreen player use dynamic resolution for the main image
* Use ceil instead of round
* Add types and lint
---------
Co-authored-by: Jeff <42182408+jeffvli@users.noreply.github.com>
* special socket for dev; defer to default otherwise
* Add write-all permissions to docker push
* special socket for dev; defer to default otherwise
---------
Co-authored-by: jeffvli <jeffvictorli@gmail.com>
* add opacity
* add background for song metadata
* Add padding and border radius to opacity elements
* Remove font-weight transition on active lyrics (#233)
---------
Co-authored-by: jeffvli <jeffvictorli@gmail.com>
- set mpv settings only after it has successfully started (at least on linux, settings were not taken)
- change timing of restore queue to behave properly
- Fix add next behavior when shuffle is enabled
- Fix shuffled queue when songs are removed from queue
- Fix queue indices when currently playing song is removed
- Re-shuffle queue after queue is finished when shuffle is enabled
* initial implementation for password saving
* support restoring password in interceptor
* Fix modal overflow and position styles
* warn about 429, better error handling
---------
Co-authored-by: jeffvli <jeffvictorli@gmail.com>
Co-authored-by: Jeff <42182408+jeffvli@users.noreply.github.com>
- Make the settings text actually consistent with behavior
- Add metadata (artist/track name) for fetched tracks
- Add ability to remove incorrectly fetched lyric
- Add lyric fetch cache; save the last 10 fetches
- Add ability to change offset in full screen, add more comments
- uses a somewhat more sane way to parse lyrics and teardown timeouts
- adds 'seeked' to setCurrentTime to make detecting seeks in lyric much easier
- adds ability to fetch lyrics from genius/netease (desktop only)
label:I have already checked through the existing bug reports and found no duplicates
options:
- label:'Yes'
required:true
- type:input
id:version
attributes:
label:App Version
description:What version of the app are you running?
placeholder:ex. 1.0.0
validations:
required:true
- type:input
id:server-version
attributes:
label:Music Server and Version
description:What music server are you using?
placeholder:ex. Navidrome v0.55.0, LMS v3.67.0, Jellyfin v10.10.7, etc.
validations:
required:true
- type:dropdown
id:environments
attributes:
label:What local environments are you seeing the problem on?
multiple:true
options:
- Desktop Windows
- Desktop macOS
- Desktop Linux
- Web Firefox
- Web Chrome
- Web Safari
- Web Microsoft Edge
- Other (please specify in the next field)
- type:textarea
id:what-happened
attributes:
label:What happened?
description:Also tell us, what did you expect to happen?
placeholder:Include screenshots and error logs if possible. The browser devtools can be opened using CTRL + SHIFT + I (Windows/Linux) or CMD + SHIFT + I (macOS).
validations:
required:true
- type:textarea
id:reproduction
attributes:
label:Steps to reproduce
description:How can we reproduce this issue? Are there any specific settings that are enabled that could be the cause?
placeholder:|
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required:true
- type:textarea
id:logs
attributes:
label:Relevant log output
description:Please copy and paste any relevant log output. This will be automatically formatted into code.
# Issues with these labels will never be considered stale
exemptLabels:
- discussion
- security
- discussion
- security
# Label to use when marking an issue as stale
staleLabel:wontfix
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment:>
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
This issue has been automatically marked as stale because it has not had recent activity. The resources of the Feishin team are limited, and so we are asking for your help.
If this is a **bug** and you can still reproduce this error on the <code>development</code> branch, please reply with all of the information you have about it in order to keep the issue open.
This issue will automatically be closed in the near future if no further activity occurs. Thank you for all your contributions.
stale-pr-message:>
This PR has been automatically marked as stale because it has not had recent activity. The resources of the Feishin team are limited, and so we are asking for your help.
This PR will automatically be closed in the near future if no further activity occurs. Thank you for all your contributions.
Download the [latest desktop client](https://github.com/jeffvli/feishin/releases).
### Desktop (recommended)
Download the [latest desktop client](https://github.com/jeffvli/feishin/releases). The desktop client is the recommended way to use Feishin. It supports both the MPV and web player backends, as well as includes built-in fetching for lyrics.
#### macOS Notes
If you're using a device running macOS 12 (Monterey) or higher, [check here](https://github.com/jeffvli/feishin/issues/104#issuecomment-1553914730) for instructions on how to remove the app from quarantine.
For media keys to work, you will be prompted to allow Feishin to be a Trusted Accessibility Client. After allowing, you will need to restart Feishin for the privacy settings to take effect.
#### Linux Notes
If you're using a Linux device, a `.desktop` file is recommended for easy launching of Feishin.
Download the [latest release (AppImage)](https://github.com/jeffvli/feishin/releases) and [application icon](https://github.com/jeffvli/feishin/blob/development/resources/icon.png?raw=true) to your `~/applications/` folder. This folder may need to be created if it does not already exist.
Rename the icon to `Feishin-linux-x86_64.png`.
Save the [example desktop file](https://raw.githubusercontent.com/jeffvli/feishin/refs/heads/development/feishin.desktop) as `~/.local/share/applications/feishin.desktop`.
You will now see Feishin show up in your menu. The properties in the example desktop file may need to be modified to match your system.
### Web and Docker
Visit [https://feishin.vercel.app](https://feishin.vercel.app) to use the hosted web version of Feishin. The web client only supports the web player backend.
Feishin is also available as a Docker image. The images are hosted via `ghcr.io` and are available to view [here](https://github.com/jeffvli/feishin/pkgs/container/feishin). You can run the container using the following commands:
```bash
# Run the latest version
docker run --name feishin -p 9180:9180 ghcr.io/jeffvli/feishin:latest
# Build the image locally
docker build -t feishin .
docker run --name feishin -p 9180:9180 feishin
```
#### Docker Compose
To install via Docker Compose use the following snippit. This also works on Portainer.
```yaml
services:
feishin:
container_name: feishin
image: 'ghcr.io/jeffvli/feishin:latest'
environment:
- SERVER_NAME=jellyfin # pre defined server name
- SERVER_LOCK=true # When true AND name/type/url are set, only username/password can be toggled
- SERVER_TYPE=jellyfin # navidrome also works
- SERVER_URL= # http://address:port
- PUID=1000
- PGID=1000
- UMASK=002
- TZ=America/Los_Angeles
ports:
- 9180:9180
restart: unless-stopped
```
### Configuration
1. Upon startup you will be greeted with a prompt to select the path to your MPV binary. If you do not have MPV installed, you can download it [here](https://mpv.io/installation/) or install it using any package manager supported by your OS. After inputting the path, restart the app.
2. After restarting the app, you will be prompted to select a server. Click the `Open menu` button and select `Manage servers`. Click the `Add server` button in the popup and fill out all applicable details. You will need to enter the full URL to your server, including the protocol and port if applicable (e.g. `https://navidrome.my-server.com` or `http://192.168.0.1:4533`).
- **Navidrome** - For the best experience, select "Save password" when creating the server and configure the `SessionTimeout` setting in your Navidrome config to a larger value (e.g. 72h).
- **Linux users** - The default password store uses `libsecret`. `kwallet4/5/6` are also supported, but must be explicitly set in Settings > Window > Passwords/secret score.
3. _Optional_ - If you want to host Feishin on a subpath (not `/`), then pass in the following environment variable: `PUBLIC_PATH=PATH`. For example, to host on `/feishin`, pass in `PUBLIC_PATH=/feishin`.
4. _Optional_ - To hard code the server url, pass the following environment variables: `SERVER_NAME`, `SERVER_TYPE` (one of `jellyfin` or `navidrome`), `SERVER_URL`. To prevent users from changing these settings, pass `SERVER_LOCK=true`. This can only be set if all three of the previous values are set.
## FAQ
### MPV is either not working or is rapidly switching between pause/play states
First thing to do is check that your MPV binary path is correct. Navigate to the settings page and re-set the path and restart the app. If your issue still isn't resolved, try reinstalling MPV. Known working versions include `v0.35.x` and `v0.36.x`. `v0.34.x` is a known broken version.
### What music servers does Feishin support?
Feishin supports any music server that implements a [Navidrome](https://www.navidrome.org/) or [Jellyfin](https://jellyfin.org/) API. **Subsonic API is not currently supported**. This will likely be added in [later when the new Subsonic API is decided on](https://support.symfonium.app/t/subsonic-servers-participation/1233).
Feishin supports any music server that implements a [Navidrome](https://www.navidrome.org/), [Jellyfin](https://jellyfin.org/), or [OpenSubsonic compatible](https://opensubsonic.netlify.app/) API.
### I have the issue "The SUID sandbox helper binary was found, but is not configured correctly" on Linux
This happens when you have user (unprivileged) namespaces disabled (`sysctl kernel.unprivileged_userns_clone` returns 0). You can fix this by either enabling unprivileged namespaces, or by making the `chrome-sandbox` Setuid.
```bash
chmod 4755 chrome-sandbox
sudo chown root:root chrome-sandbox
```
Ubunutu 24.04 specifically introduced breaking changes that affect how namespaces work. Please see https://discourse.ubuntu.com/t/ubuntu-24-04-lts-noble-numbat-release-notes/39890#:~:text=security%20improvements%20 for possible fixes.
## Development
Built and tested using Node `v16.15.0`.
Built and tested using Node `v23.11.0`.
This project is built off of [electron-react-boilerplate](https://github.com/electron-react-boilerplate/electron-react-boilerplate) v4.6.0.
This project is built off of [electron-vite](https://github.com/alex8088/electron-vite)
- `pnpm run dev` - Start the development server
- `pnpm run dev:watch` - Start the development server in watch mode (for main / preload HMR)
- `pnpm run start` - Starts the app in production preview mode
- `pnpm run build` - Builds the app for desktop
- `pnpm run build:electron` - Build the electron app (main, preload, and renderer)
- `pnpm run build:remote` - Build the remote app (remote)
- `pnpm run build:web` - Build the standalone web app (renderer)
- `pnpm run package` - Package the project
- `pnpm run package:dev` - Package the project for development locally
- `pnpm run package:linux` - Package the project for Linux locally
- `pnpm run package:mac` - Package the project for Mac locally
- `pnpm run package:win` - Package the project for Windows locally
- `pnpm run publish:linux` - Publish the project for Linux
- `pnpm run publish:linux:beta` - Publish the project for Linux (beta channel)
- `pnpm run publish:linux-arm64` - Publish the project for Linux ARM64
- `pnpm run publish:linux-arm64:beta` - Publish the project for Linux ARM64 (beta channel)
- `pnpm run publish:mac` - Publish the project for Mac
- `pnpm run publish:mac:beta` - Publish the project for Mac (beta channel)
- `pnpm run publish:win` - Publish the project for Windows
- `pnpm run publish:win:beta` - Publish the project for Windows (beta channel)
- `pnpm run typecheck` - Type check the project
- `pnpm run typecheck:node` - Type check the project with tsconfig.node.json
- `pnpm run typecheck:web` - Type check the project with tsconfig.web.json
- `pnpm run lint` - Lint the project
- `pnpm run lint:fix` - Lint the project and fix linting errors
- `pnpm run i18next` - Generate i18n files
## Translation
This project uses [Weblate](https://hosted.weblate.org/projects/feishin/) for translations. If you would like to contribute, please visit the link and submit a translation.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.