Skip to content

Releases: moodiness/polyfin

Polyfin 0.44.2

Choose a tag to compare

@github-actions github-actions released this 22 Oct 22:14

Image: ghcr.io/moodiness/polyfin:0.44.2 (linux/amd64, linux/arm64), digest sha256:01dae63f50c9a42d6f6b837b13641c8a9f234fd0a7b3d652fda8e09fb92937f9. It includes jellyfin-web, unmodified, under the GPL-2.0: its complete source is attached.

Fixed

  • Polyfin no longer stops when a WireGuard tunnel for torrents closes while a packet is on its way, the case 0.44.1's fix left: the tunnel's interface closed while one of its own goroutines was still sending, which ended the server.
  • On Windows, Polyfin Desktop's update and log folder items show their window. The installer and Explorer started hidden, so installing an update from the menu, and opening the log folder, seemed to do nothing. An update that fails once Polyfin has stopped is now told in the menu too.
  • Video converted on the processor is sharper: x264 encoded H.264's Main profile, not the High profile the playlist announces.
  • Under a bitrate limit, a lossless audio track no longer shrinks the video. Its bitrate was taken off the video's share, though the audio is converted to 192 kb/s: a 10 Mb/s choice on a movie with lossless audio gave 720p at 5 Mb/s, and now gives 1080p.
  • Converted video keeps the colors its source states. An HEVC source whose colors are stated in its container lost them when converted, on the processor and on GPUs alike, and players had to guess them.
  • System › Health tells when the NVIDIA driver is too old for NVENC. The FFmpeg Polyfin ships needs driver 610 or newer, which Maxwell, Pascal and Volta cards never get: video was converted on the processor without a word. The log now gives FFmpeg's reason for each GPU method whose test fails. See NVIDIA driver.
  • Refresh metadata keeps a title's cast, overview and genres when its metadata addon fails, rather than wiping them until the addon answers again.
  • The web player's search page shows suggestions before anything is typed, rather than a heading with nothing under it.
  • Speech finding no longer downloads stretches of a torrent while it plays, up to 300 MB at a torrent version's first play. Torrent versions are now left out of Sync addon subtitles: their addon subtitles keep the addons' timing.
  • System › Health answers at once while a WireGuard tunnel for torrents cannot connect, rather than after 2 seconds on each request. A tunnel that comes back is seen within about 13 seconds.
  • The default theme's home carousel is off by default, so the home's rows start at the top of the screen. Each user can turn it on in the theme's settings, and a user who saved those settings keeps them.

Upgrading

  • Database: a server whose web player script is still the default one gets the new default, carousel off. A script changed by an administrator is kept as it is.

What's Changed

  • fix(desktop): show the installer and Explorer on Windows, and tell a failed update by @moodiness in #548
  • fix(transcoding): sharper converted video, its colors kept, and why a GPU does not encode by @moodiness in #549
  • fix: six patch fixes (refresh, suggestions, theme carousel, speech on torrents, added files, Health) by @moodiness in #550

Full Changelog: v0.44.1...v0.44.2

Polyfin 0.44.1

Choose a tag to compare

@github-actions github-actions released this 22 Oct 17:45

Image: ghcr.io/moodiness/polyfin:0.44.1 (linux/amd64, linux/arm64), digest sha256:475fb52544a2397006a2b29953f08fe39786793275f877622bebcc9971253d85. It includes jellyfin-web, unmodified, under the GPL-2.0: its complete source is attached.

New

  • Lyrics files uploaded in the web player. The lyrics editor's upload button now keeps an .lrc or text file as a song's lyrics, as an administrator's choice: no automatic look-up replaces it, and the delete button removes it. An upload works and is served whether Song lyrics from LRCLIB is on or not. See Choosing lyrics.

Fixed

  • Polyfin no longer stops when a WireGuard tunnel for torrents changes during a playback, or as the server stops: the tunnel closed while its sockets were still sending, which ended the server.
  • Torrents through a SOCKS5 proxy no longer stop on their own: when uTP reached a peer while the TCP connection to it was still being made through the proxy, the proxy was taken as down for 5 seconds, which stopped the torrent. A torrent started right after another one stopped could fail the same way.
  • A torrent that one peer alone serves no longer stalls on a block that peer dropped without a word: the block is asked again, and a peer that sends nothing for 3 minutes is given up. A slow peer is kept.
  • A piece checked against its hash is no longer asked for again, which sent as many duplicate requests.
  • System › Health's problems answer within 2 seconds while a WireGuard tunnel is down, rather than after 8 on nearly every refresh.
  • One warning for an anime mapping list that cannot be downloaded, rather than one at each try, several times a day.

Upgrading

  • Database: found lyrics gain a mark for those uploaded.

What's Changed

  • fix: Health's problems quick with a tunnel down, and one warning for unreachable anime lists by @moodiness in #529
  • fix(torrent): do not keep a proxy request cut short as the proxy's failure by @moodiness in #530
  • feat(lyrics): the lyrics editor's upload button by @moodiness in #531
  • fix(torrent): no crash when a WireGuard tunnel stops while its sockets send by @moodiness in #532
  • fix(torrent): ask again for a block a peer dropped without a word, telling a drop from slowness by @moodiness in #533

Full Changelog: v0.44.0...v0.44.1

Polyfin 0.44.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 22:00

Image: ghcr.io/moodiness/polyfin:0.44.0 (linux/amd64, linux/arm64), digest sha256:485750ec617b2f85d297a53f14d51df3132382b63073f8154087759dce579e39. It includes jellyfin-web, unmodified, under the GPL-2.0: its complete source is attached.

New

  • Torrents over uTP (#487). Polyfin reaches peers over uTP beside TCP, through every route: the network interface, a SOCKS5 proxy with UDP ASSOCIATE, and the WireGuard tunnel. Many peers take uTP, and some take nothing else: on the local test swarm, a torrent reaches twice as many of them. System › Health tells how many peers were reached over uTP. See uTP.
  • Peer exchange and an endgame (#487). Peers tell Polyfin the other peers they are connected to, and the last blocks a playback waits for are asked of a second peer when the first is slow. A private torrent uses neither peer exchange nor the DHT once its info is known. See Reading and storage.
  • Lyrics chosen in the web player (#488). With Song lyrics from LRCLIB on, the web player's lyrics editor searches LRCLIB, and an administrator can choose a song's lyrics there, or delete them. No automatic look-up replaces a choice, and a local song's own lyrics file is never changed. See Choosing lyrics.

Fixed

  • System › Health answers while a WireGuard tunnel is down: it answered an error for as long as the tunnel's server did not answer, when it is needed most.
  • Torrents that only the DHT lists start after a node's answer was lost: the next look-up came 5 minutes later, past the minute a start waits.
  • Torrent peers stay connected while Polyfin has nothing to ask them: every peer left quiet for a minute, during a pause for instance, was dropped.
  • Torrents that a strict seeder alone serves play: Polyfin asked for blocks before saying it was interested, and such a seeder never served them.
  • Remind me shows on a TV programme's page opened directly, by a reload, a bookmark or a link.
  • No more errors in the browser's console on pages other than TV programmes, from the web player's script that adds Remind me.

Upgrading

  • Database: found lyrics gain a mark for those an administrator chose or removed. Nothing changes until the lyrics editor is used.

What's Changed

  • fix(torrent): look the DHT up again soon after a lookup that found no peer by @moodiness in #506
  • feat(torrent): peer exchange, an endgame, and no DHT for private torrents by @moodiness in #507
  • feat(lyrics): search, choose and delete lyrics from the web player's lyrics editor by @moodiness in #508
  • fix(torrent): tell a peer Polyfin is interested before asking it for blocks by @moodiness in #509
  • feat(torrent): reach peers over uTP beside TCP, through every route by @moodiness in #510
  • fix: no reminder errors on other pages, Remind me on a programme opened directly, and Health with a tunnel down by @moodiness in #525
  • fix(desktop): remove the app's record even while Windows holds it open by @moodiness in #526
  • fix(torrent): no crash when a dial through the WireGuard tunnel fails after uTP won by @moodiness in #527

Full Changelog: v0.43.0...v0.44.0

Polyfin 0.43.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 09:23

Image: ghcr.io/moodiness/polyfin:0.43.0 (linux/amd64, linux/arm64), digest sha256:948f101d8b3df71e6f51c2288419f40548a69cfbdffa701eb009a3b700e51c7a. It includes jellyfin-web, unmodified, under the GPL-2.0: its complete source is attached.

New

  • Torrents through a WireGuard tunnel built into Polyfin (#486). Paste your VPN provider's WireGuard configuration under Settings › Torrents: Polyfin runs the tunnel itself, for torrent traffic alone, with no VPN container, no host network and no added capability, the same on Linux, Docker, Windows and macOS, where Polyfin Desktop had only a SOCKS5 proxy. Peers, trackers and the DHT all go through it, and tracker names are resolved by the configuration's DNS servers through the tunnel, never by the system. While the tunnel is down, torrents do not play and nothing goes out another way. Its keys are stored encrypted and never shown back. See WireGuard tunnel.
  • German, Spanish, Italian and Brazilian Portuguese (#186). The admin app, the texts the server writes (notifications, emails, System › Health, the share page, library and version names), Polyfin's additions to the web client and Polyfin Desktop's menu speak them, beside English and French. Each user can choose one, and so can the server.
  • Catalogs of other videos (#493). Addons' catalogs of the Stremio type other, such as a debrid store's, which lists the files of a cloud store, were empty libraries. Their titles are now folders of videos, or videos, which Jellyfin apps browse and play as they play movies, with watched state and resume. The streams a title's videos carry themselves play too, a series' episodes alike. Enable such a catalog under Content › Libraries. See What catalogs list.

Fixed

  • Person pages opened at once by several apps open: one of them could answer an error, as two requests recorded the same new titles at once.
  • The anime mapping lists are not downloaded again after a server stopped right as it finished downloading them.

Upgrading

  • Database: a setting holds the WireGuard configuration for torrents, and the server's and users' language take the four new languages. Nothing changes until they are used.

What's Changed

  • feat(torrent): play torrents through a WireGuard tunnel run inside Polyfin by @moodiness in #491
  • feat(library): list other titles as folders of videos, and play the streams a video embeds by @moodiness in #496
  • fix(anime): keep a mapping list's state when the server stops as the list is put in use by @moodiness in #501
  • build(web): vite 8.3.4, whose launch-editor fixes three advisories by @moodiness in #500
  • feat(i18n): German, Spanish, Italian and Brazilian Portuguese by @moodiness in #494
  • test(playback): wait for a playback's read-ahead window rather than taking a one-second pause for its end by @moodiness in #502
  • fix(library): merge stored items with an UPDATE, so requests saving the same items at once never fail on their key by @moodiness in #503
  • fix(jellyfin): name the Collections view in the server's language by @moodiness in #504

Full Changelog: v0.42.6...v0.43.0

Polyfin 0.42.6

Choose a tag to compare

@github-actions github-actions released this 21 Oct 03:48

Image: ghcr.io/moodiness/polyfin:0.42.6 (linux/amd64, linux/arm64), digest sha256:257740e105af4f851f79ffb930f9ec7e3af6f3a5823befd0153ce5edd9c7bbda. It includes jellyfin-web, unmodified, under the GPL-2.0: its complete source is attached.

Fixed

  • Torrents play (#490). A torrent version that had never been analyzed could not play: apps said the media was not compatible. Opening the title's page made the torrent fail before its playback joined the swarm, and only the first torrent version of a title was really tried. A playback now joins the swarm before anything reads the torrent, and tries each torrent version as its own. Trackers also refused Polyfin's announces, for the port it gave and for how it wrote some bytes: both are fixed, and a tracker's own reason is logged at debug. The DHT now also starts from the bootstrap nodes BitTorrent clients use, over a route that carries UDP, and a torrent has 60 seconds to start. When a torrent cannot start, apps say the media cannot be played now, and System › Health tells why. See How a torrent starts.
  • A local folder's files are matched when an addon refuses a search's second page (#489). Matching asked each metadata addon's search for a second page when the first held fewer than 20 titles: an addon refusing it failed the search, and with a single metadata addon, every file of the folder stayed unmatched. Searches now read the first page only, wait out an addon asking to slow down, and one failing addon no longer fails the titles another finds. A folder's page and System › Health now tell which addon's search failed and why, and the folder is searched again 5 minutes later, then less and less often, until its searches go through. See Local folders.

Upgrading

  • Database: a local file keeps the addon and the reason of its failed search, and a local folder when it is searched again. Nothing to do.

What's Changed

  • fix(localfiles): match a folder's files when an addon refuses a search's second page, and show why a search failed by @moodiness in #492
  • fix(playback): play a torrent version never analyzed from its first Play, and announce as trackers take it by @moodiness in #495

Full Changelog: v0.42.5...v0.42.6

Polyfin 0.42.5

Choose a tag to compare

@github-actions github-actions released this 20 Oct 17:27

Image: ghcr.io/moodiness/polyfin:0.42.5 (linux/amd64, linux/arm64), digest sha256:d9616d76de0bbf9185043f76f0fae2044b7c92f8e191ad1687eb5fc4320ba7ba. It includes jellyfin-web, unmodified, under the GPL-2.0: its complete source is attached.

Fixed

  • On macOS, files added to a folder created in a watched local folder are seen. When a folder was created in a watched folder, the system's file watching could lose the writes in that new folder: a movie later copied into it showed only at the next scheduled scan, hours later. The new folder is now watched again as its scan begins, and the scan lists what was written meanwhile. Linux, Docker and Windows were not affected.

Upgrading

  • Database: there is no database change.

What's Changed

  • fix(localfiles): watch again on macOS the folders created as their scan begins, so files added later are seen by @moodiness in #485

Full Changelog: v0.42.4...v0.42.5

Polyfin 0.42.4

Choose a tag to compare

@github-actions github-actions released this 20 Oct 16:00

Image: ghcr.io/moodiness/polyfin:0.42.4 (linux/amd64, linux/arm64), digest sha256:9049bb9065d891744275c1d8055d0f718bc36bf44d4e2aa4d4f5fa55b9ab834e. It includes jellyfin-web, unmodified, under the GPL-2.0: its complete source is attached.

Fixed

  • A refresh always asks the addons again. When an administrator refreshed a title while an addon was still answering for its versions, which item details ask in the background, the answer from before the refresh was kept as a fresh list: the title kept its old versions until they expired. That answer is now left out, and the addon is asked again.
  • A recording shows as under way only with its active timer and its stream. At the very start of a recording, an app could see it in progress while its timer was not yet active, and its live stream answered that it was not found.
  • Requests to a source keep their pace. A request whose timer fired late could go to the host right before the next one, closer than Polyfin's pacing allows, and requests already waiting went out during the pause a host had asked for with a 429 or 503 answer.

Upgrading

  • Database: there is no database change.

What's Changed

  • fix(source): space the fetches a source is sent from the instant each one goes by @moodiness in #482
  • fix(recordings): show a recording under way only together with its active timer and its stream by @moodiness in #483
  • fix(library): a refresh leaves out the answers to requests under way and asks the addon again by @moodiness in #484

Full Changelog: v0.42.3...v0.42.4

Polyfin 0.42.3

Choose a tag to compare

@github-actions github-actions released this 20 Oct 00:31

Image: ghcr.io/moodiness/polyfin:0.42.3 (linux/amd64, linux/arm64), digest sha256:91b8cdb6ac288de4e5ac493706cb9b6c4fd4c34a7ccdfb18b8046232073e535d. It includes jellyfin-web, unmodified, under the GPL-2.0: its complete source is attached.

Fixed

  • The first-start page tells Polyfin Desktop's users where the setup code is. It told everyone to look for it with docker logs. Polyfin Desktop's menu shows the code: Setup code copies it, as long as no administrator exists. Outside a container, the page now says so, or to look in Polyfin's log; in a container, it says as before. See First start.

Upgrading

  • Database: there is no database change.

What's Changed

  • test(thumbnails): check the pacing where the gate decides it, not where the source is reached by @moodiness in #480
  • fix(admin): tell Polyfin Desktop's users where the setup code is by @moodiness in #481

Full Changelog: v0.42.2...v0.42.3

Polyfin 0.42.2

Choose a tag to compare

@github-actions github-actions released this 19 Oct 19:21

Image: ghcr.io/moodiness/polyfin:0.42.2 (linux/amd64, linux/arm64), digest sha256:8bbd17ebc25c271de305b003427c4512fd96ccb8254211f4e27c1f344cf96751. It includes jellyfin-web, unmodified, under the GPL-2.0: its complete source is attached.

New

  • Polyfin Desktop rebuilds its database's indexes when an update brings another ICU. The packages' PostgreSQL sorts text with ICU, whose version an update may change: indexes built under the old version may then not follow the new order, and PostgreSQL warns at each connection. As it starts after such an update, Polyfin Desktop rebuilds them and records the new version; the menu says so meanwhile. See Updates.
  • polyfin-desktop -quit quits the Polyfin Desktop running on the same data folder, as Quit Polyfin does, from a terminal or a script, and tells by its exit code whether it quit or none was running. See Quitting from a terminal.
  • Windows: Polyfin's programs carry their icon and their version, which Explorer and the Task Manager show.

Fixed

  • Polyfin Desktop no longer sits idle when the system cannot show its icon. It started Polyfin only once its icon showed, so a session without a notification area started nothing and said nothing. It now starts at once, and after 30 seconds without its icon it writes an error to desktop.log and runs on without it, until polyfin-desktop -quit quits it.
  • The help of Recordings folder, Backups folder and Watch folders and shares for changes spoke of Polyfin's container and its data volume, wrong for Polyfin Desktop and for a server run without Docker. It now describes a folder of the computer when Polyfin runs outside a container.

Upgrading

  • Database: there is no database change.

What's Changed

  • Name no real addon, and describe folders of a computer in the admin help by @moodiness in #477
  • fix(desktop): rebuild the indexes of a database whose collation version changed by @moodiness in #478
  • feat(desktop): quit the app with -quit, and give the Windows programs their icon and version by @moodiness in #479

Full Changelog: v0.42.1...v0.42.2

Polyfin 0.42.1

Choose a tag to compare

@github-actions github-actions released this 19 Oct 03:59

Image: ghcr.io/moodiness/polyfin:0.42.1 (linux/amd64, linux/arm64), digest sha256:a46e8d21133131672f700323fb77b184c957dc1bf5de16b5aa58b4321a07e98e. It includes jellyfin-web, unmodified, under the GPL-2.0: its complete source is attached.

New

  • Polyfin Desktop for Windows on Arm (#475). A native installer, Polyfin-Desktop-0.42.1-windows-arm64-setup.exe, is attached to this release with the other packages. Until now a Windows on Arm PC could only run the x64 installer, under Windows' emulation, which slows Polyfin down, FFmpeg's conversions included. It carries a PostgreSQL 18 of its own, built for Windows on Arm from PostgreSQL's official source. See Install.

Upgrading

  • Database: there is no database change.
  • Polyfin Desktop on Windows on Arm: an install made with the x64 installer keeps running under emulation, and its updates stay x64. To move it to the arm64 installer, see Moving to the arm64 package on Windows on Arm.

What's Changed

  • build(desktop): a native Polyfin Desktop package for Windows on Arm by @moodiness in #474
  • test(admin): never guess an invite's own token in the throttling test by @moodiness in #476

Full Changelog: v0.42.0...v0.42.1