Releases: kzahel/JSTorrent
Releases · kzahel/JSTorrent
Release list
JSTorrent iOS v1.0.7
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
- 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
JSTorrent Desktop v0.2.0
- 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
Extension v1.1.1
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
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
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
- 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
JSTorrent Desktop v0.1.30
- 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
JSTorrent Desktop v0.1.29
- 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
Extension v1.0.6
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