Skip to content

TorrentPlayer 0.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 22 Oct 11:52
· 19 commits to main since this release
b728b11

The first release as TorrentPlayer (formerly TorrentStream).

Updating from TorrentStream: close TorrentStream and run the installer. TorrentPlayer installs next to it; on the first start it moves your settings, queue, download cache, the default Downloads/TorrentStream folder, and stored secrets to its own folders. You can then uninstall TorrentStream. If you used the old VPN adapter mode, traffic stays paused until you confirm the change (see Removed below).

Unsigned builds: the installers are not code-signed yet, so Windows SmartScreen and macOS Gatekeeper warn on first launch. Verify downloads with SHA256SUMS.txt and gh attestation verify (how). ffmpeg-9.0.2.tar.xz is the source of the bundled LGPL FFmpeg that plays Dolby and DTS audio.

Changed

  • TorrentStream is now TorrentPlayer (torrentplayer.io, github.com/torrentplayer/torrentplayer). The app identifier is io.torrentplayer.desktop and the binary TorrentPlayer. Settings, the queue, the download cache, the default Downloads/TorrentStream folder, and stored secrets move to the new names at start-up. The LUMEN_* environment variables are now TORRENTPLAYER_*, and the crates are named torrentplayer-*.
  • New app icon: a play button ringed by swarm peers.

Added

  • Incoming peer connections can be turned on in Settings → VPN and network, on a chosen or random port, for more peers and better uploads (off by default, so there is still no firewall prompt unless chosen). TorrentPlayer listens only where the network mode allows: every interface in direct mode (with optional UPnP port mapping) and only inside the tunnel with WireGuard; never through a SOCKS5 proxy, and never while the kill switch blocks traffic. Settings shows whether it is listening.
  • torrentplayer-swarm keeps its DHT routing tables in the app data folder between runs (Direct mode only), so magnet links find peers sooner after a restart. Protected modes still start with a fresh node and save nothing. librqbit starts from the bootstrap servers each time: from a saved table it fetched magnet metadata more slowly, not faster.
  • In Direct mode, Settings → Network and the status bar recommend a VPN when downloading or seeding (connect a VPN app such as Windscribe first, or use the WireGuard mode with your provider's WireGuard configuration), with a link to the blog post on VPNs; it is shown once more when seeding starts, until dismissed (network.vpnHintDismissed).
  • DHT peer discovery now runs inside the built-in WireGuard tunnel. SOCKS5 proxies with UDP ASSOCIATE support carry DHT and UDP trackers, including magnet metadata discovery, without falling back to direct UDP or target DNS.
  • torrentplayer-swarm now uploads verified pieces with cancellable, bounded reads, reports per-torrent and total upload rates, and shares the global upload limit with librqbit.
  • Seeding can continue after playback until a ratio or time target is reached, and the configured peer cap now applies to both engines.
  • Storage can cap cache size and expire old finished downloads automatically, while protecting everything queued or open in the player; Settings shows current use and offers a safe clear-now action.
  • Playback positions persist across restarts in a local library, reopening unfinished media offers to resume or start over, and watch progress appears in both the Library and queue.
  • Seek-bar previews: with FFmpeg installed (on PATH or in a folder chosen in Settings), pointing at the seek bar shows a frame of the video, for the parts already downloaded.
  • The duration of a video now comes from its container header (MP4, Matroska) or, with FFmpeg, ffprobe when the player cannot tell, so read-ahead and buffering work for such files too. FFmpeg reads only what is already downloaded and is locked down to the local stream.
  • Videos with Dolby (AC-3, E-AC-3, TrueHD) or DTS audio now play with sound: a bundled, playback-only LGPL FFmpeg converts the audio to AAC as the video plays, copying the video, and the player keeps the full seek bar and restarts the conversion on far seeks.
  • torrentplayer-bench measures streaming with incoming peers only (local --inbound), how closely an engine holds a download limit that changes mid-transfer (limit), and start-up from a saved DHT state (--dht-state, --no-trackers). See docs/performance.md.

Removed

  • The VPN adapter network mode (binding all traffic to a VPN app's network adapter, saved as bindInterface) and its adapter picker. The modes are now Direct, SOCKS5 proxy, and built-in WireGuard: keep a VPN app connected at the system level and choose Direct, or import your provider's WireGuard configuration for a kill switch inside TorrentPlayer (see ADR 0009). Saved settings that used it load as Direct, and TorrentPlayer pauses all torrent traffic and searches until you dismiss the notice in Settings → Network or beside the status bar's network indicator (or choose SOCKS5 or WireGuard), so nothing is sent outside your VPN without your confirmation. Settings files are now version 4.

Fixed

  • A skipped queue item no longer says "Skipped" twice; its second line shows how much of it is already downloaded, if any.
  • The download speed shown for torrentplayer-swarm torrents no longer runs up to a quarter above the real rate while peers come and go (as they do under a download limit), so the queue's "in use" figure stays within the configured limit.
  • Changing the download limit while torrentplayer-swarm downloads from many peers is now smooth. Lowering it used to let every waiting peer through at once (about 1.5 MB within 0.2 s with 40 peers) and then deliver nothing for over a second, which could stall playback; waits now stretch or shrink to the new limit, and under a limit each peer is read one block at a time so no peer waits long for its turn.
  • Under a download limit, torrentplayer-swarm no longer asks many peers for more than the limit lets through before requests time out. Those requests were fetched twice, so with 40 peers up to a third of the limited bandwidth went to data that was thrown away.

Fixed

  • Releases: the parallel builds no longer create duplicate draft releases (v0.2.0 got two). One job creates the draft and one uploads every file, so the macOS .app.tar.gz archives now have checksums and attestations too.