Skip to content

Releases: kzahel/JSTorrent

JSTorrent iOS v1.0.7

Choose a tag to compare

@github-actions github-actions released this 01 Apr 11:30

Changed

  • Fix CI: repurpose versions in any non-terminal state (cancel active submissions first)

AltStore PAL

Add JSTorrent to AltStore PAL:

altstore://source?url=https://jstorrent.com/altstore-source.json

JSTorrent Desktop v0.2.1

Choose a tag to compare

@github-actions github-actions released this 14 Mar 11:19
  • Fix video player not releasing file lock on close, which could block other files from downloading

Download

Platform
macOS (Apple Silicon) .dmg · .pkg
macOS (Intel) .dmg · .pkg
Windows .exe · .msi
Linux x86_64 .deb · .AppImage · .rpm
Linux ARM64 .deb · .AppImage · .rpm

ChromeOS (Crostini)

For ChromeOS devices without Play Store, install the I/O daemon in the Linux container:

curl -fsSL https://jstorrent.com/install-crostini.sh | bash

Standalone binaries: x86_64 · ARM64

JSTorrent Desktop v0.2.0

Choose a tag to compare

@github-actions github-actions released this 14 Mar 10:45
  • Add video streaming: right-click Watch on video files for in-app playback with MKV keyframe seeking
  • Add desktop video fullscreen support (double-click to toggle)
  • Add LAN media share server for streaming to other devices on the network
  • Add web seed support: concurrent transfers, keep-alive connections, redirect handling, rate limiting
  • Add search plugin system with installable Internet Archive plugin
  • Add toast notification system (recheck results, etc.)
  • Port media streaming session contract to Rust io-daemon
  • Advertise IO daemon contract versions for conformance testing
  • Return 404 for missing daemon deletes instead of silently succeeding
  • Fix background update check spawning Tauri app window
  • Fix Windows taskbar icon and Linux window icon
  • Fix zero upload slots choking behavior
  • Fix file progress display after torrent recheck
  • Fix extension takeover from desktop app
  • Prefer UTF-8 torrent metadata and paths
  • Support magnet select-only file indices
  • Add configurable active piece memory limit
  • Add diagnostic logging for magnet deep link routing
  • Fix io-daemon spurious shutdown on transient parent process check failure (e.g., after sleep/wake)

Download

Platform
macOS (Apple Silicon) .dmg · .pkg
macOS (Intel) .dmg · .pkg
Windows .exe · .msi
Linux x86_64 .deb · .AppImage · .rpm
Linux ARM64 .deb · .AppImage · .rpm

ChromeOS (Crostini)

For ChromeOS devices without Play Store, install the I/O daemon in the Linux container:

curl -fsSL https://jstorrent.com/install-crostini.sh | bash

Standalone binaries: x86_64 · ARM64

Extension v1.1.1

Choose a tag to compare

@github-actions github-actions released this 14 Mar 15:16

Fixed

  • Video player not releasing file lock on close
  • Stale streaming suppressions persisting after file lock removal, preventing pieces from resuming download

Changed

  • Internet Archive search plugin now filters results to Creative Commons and public domain licenses only

Extension v1.1.0

Choose a tag to compare

@github-actions github-actions released this 14 Mar 10:58

Added

  • Video streaming: right-click "Watch" on video files to stream directly from the torrent swarm with MKV keyframe-aware seeking and piece timeline visualization
  • Web seed support (BEP 17/19): concurrent HTTP downloads from web seeds with keep-alive, rate limiting, redirect handling, and health-based source selection
  • LAN media sharing: generate shareable URLs for completed files accessible by other devices on the local network (desktop only, capability-gated)
  • Search plugins infrastructure (behind feature flag): sandboxed plugin install and execution, Internet Archive sample plugin, search results with torrent actions
  • Configurable active piece memory limit
  • IO daemon and native host contract version advertising and conformance testing
  • Toast notification system for recheck results
  • Magnet URI select-only file indices (pre-select specific files before metadata)

Fixed

  • Companion write backpressure deadlock: downloads stalling after 32MB of cumulative writes on ChromeOS
  • ChromeOS download root state sync not reflecting current roots
  • Extension takeover from desktop app failing
  • File progress not updating after torrent recheck
  • Data check using wrong batch size
  • Zero upload slots causing incorrect choking behavior
  • Streaming file lock preemption and cleanup on file completion
  • Boundary .parts file materialization on session restore

Changed

  • Rewrote .parts partial file storage to use fixed header slots (libtorrent partfile compatibility)
  • Prefer UTF-8 torrent metadata and file paths over legacy encodings
  • Streaming-aware peer selection: prioritize peers with pieces needed for active video playback
  • Moved ChromeOS capability discovery from HTTP polling to control WebSocket channel
  • Decoupled popup video player from engine bundle for faster loading
  • Recommended backend versions: Tauri App v0.2.0, Android v1.0.23

android-v1.0.23

Choose a tag to compare

@github-actions github-actions released this 14 Mar 10:11

Added

  • Media streaming player (Media3) with subtitle support, fullscreen swipe, and LAN sharing
  • Torrent search with plugin system and WebView sandbox
  • Web seed support (BEP 17/19) with keep-alive, concurrency, and redirect handling
  • Configurable active piece memory limit
  • Companion mode power management to prevent ARCVM Doze stalls
  • Default gateway detection for port mapping (NAT-PMP/PCP)
  • Data Saver detection with user warning banner

Fixed

  • Fix companion write backpressure deadlock: downloads stalled after 32MB of writes due to cumulative byte counter used for backpressure instead of in-flight bytes
  • Fix OOM crash on Chromebox (Android 13, SDK 33)
  • Use positioned SAF fd I/O for reduced write copy overhead
  • Fix player pause behavior and fullscreen overlay controls
  • Fix file priority await and .parts materialization on file unskip
  • Prefer UTF-8 torrent metadata and paths

Changed

  • Add IO daemon conformance gate with contract versioning
  • Harden Android memory crash paths and add instrumentation

JSTorrent Desktop v0.1.31

Choose a tag to compare

@github-actions github-actions released this 03 Mar 14:14
  • Fix 10-second startup delay by removing unnecessary backend-ready synchronization
  • Fix startup race condition: wait for backend-ready event before IPC
  • Add retry logic to TauriChannel handshake for setup race condition
  • Add Crostini mode UI and ensure download root exists
  • Fix version check for Crostini: treat as desktop backend, not Android
  • Fix Crostini standalone daemon /status response for extension compatibility

Download

Platform
macOS (Apple Silicon) .dmg · .pkg
macOS (Intel) .dmg · .pkg
Windows .exe · .msi
Linux x86_64 .deb · .AppImage · .rpm
Linux ARM64 .deb · .AppImage · .rpm

ChromeOS (Crostini)

For ChromeOS devices without Play Store, install the I/O daemon in the Linux container:

curl -fsSL https://jstorrent.com/install-crostini.sh | bash

Standalone binaries: x86_64 · ARM64

JSTorrent Desktop v0.1.30

Choose a tag to compare

@github-actions github-actions released this 03 Mar 12:05
  • Add auto-updater hardening tests and CI gates
  • Fix plugin-opener resolution and daemon handshake
  • Fix Crostini standalone daemon serializing snake_case keys for /status
  • Route Report Bug button to feedback.html instead of GitHub

Download

Platform
macOS (Apple Silicon) .dmg · .pkg
macOS (Intel) .dmg · .pkg
Windows .exe · .msi
Linux x86_64 .deb · .AppImage · .rpm
Linux ARM64 .deb · .AppImage · .rpm

ChromeOS (Crostini)

For ChromeOS devices without Play Store, install the I/O daemon in the Linux container:

curl -fsSL https://jstorrent.com/install-crostini.sh | bash

Standalone binaries: x86_64 · ARM64

JSTorrent Desktop v0.1.29

Choose a tag to compare

@github-actions github-actions released this 03 Mar 10:02
  • Publish standalone io-daemon Linux binaries to GitHub Releases for ChromeOS Crostini
  • Add Crostini install script (curl -fsSL https://jstorrent.com/install-crostini.sh | bash)
  • Add default gateway detection across all backends (port-mapping)
  • Fix stale profileId causing permanent "Connection Lost" on desktop
  • Fix app not fully quitting on window close when "Run in Background" is off

Download

Platform
macOS (Apple Silicon) .dmg · .pkg
macOS (Intel) .dmg · .pkg
Windows .exe · .msi
Linux x86_64 .deb · .AppImage · .rpm
Linux ARM64 .deb · .AppImage · .rpm

ChromeOS (Crostini)

For ChromeOS devices without Play Store, install the I/O daemon in the Linux container:

curl -fsSL https://jstorrent.com/install-crostini.sh | bash

Standalone binaries: x86_64 · ARM64

Extension v1.0.6

Choose a tag to compare

@github-actions github-actions released this 03 Mar 14:27

Added

  • Crostini mode UI for ChromeOS without ARC (io-daemon in Linux container)
  • NAT-PMP (RFC 6886) and PCP (RFC 6887) port mapping clients
  • Default gateway detection across all backends
  • Legacy migration snooze support and aggressive nag system
  • Legacy app/extension IDs in externally_connectable for bidirectional detection
  • Torrents-added usage metric tracking

Fixed

  • Tauri 10s startup delay from unnecessary backend-ready synchronization
  • Tauri startup race: wait for backend-ready event before IPC
  • TauriChannel handshake retry for setup race condition
  • Stale profileId causing permanent "Connection Lost" on desktop
  • Native host and io-daemon lingering when no extension UI is open
  • Native port cleanup on failed handshake
  • Version check for Crostini: treat as desktop backend, not Android
  • Tauri desktop app plugin-opener resolution and daemon handshake

Changed

  • Report Bug button routes to feedback.html instead of GitHub
  • Replaced new.jstorrent.com URLs with jstorrent.com
  • Removed chromeos-testbed/ and extension/tools/ (moved to standalone repo)
  • Renamed upnp/ to port-mapping/ for NAT-PMP and PCP support