v1.6.0: Huge, MAJOR update with all bs
Added
- Native Hardlinking: Added
hardlink_dirconfig parameter. Gorrent now automatically creates zero-byte hardlinks (preserving category folders) for completed downloads, allowing seamless integration with Plex/Jellyfin without interrupting the seeding process. - Post-Processing Scripts: Added
post_scriptconfig parameter. Gorrent can now execute any script when a torrent reaches 100%. Environment variables (GORRENT_HASH,GORRENT_NAME,GORRENT_PATH,GORRENT_CATEGORY) are injected automatically. For Docker deployments, use thecallbackwebhook instead. - Post-Processing State Manager: Created a background engine that writes
gorrent_processed.jsontodata_dirto guarantee scripts and links are executed exactly once per torrent. - AI Skills Full Awareness: Taught Claude, Hermes, and OpenClaw how to manipulate all v1.6.0 parameters via
config.jsonso users can enable these features strictly via natural language.
Fixed
- RSS — Nyaa/ShowRSS magnet resolution: RSS parser now correctly extracts magnet links from
<enclosure url="magnet:...">and<torrent:magnetURI>fields. Previously only read<link>, which for Nyaa is a page URL, not a magnet. - RSS — history key stability: History tracker now uses the magnet URI as key instead of
<link>, making it consistent across feeds that report items differently. - RSS — unnecessary disk writes:
rss_history.jsonis now saved once per feed poll instead of once per matched item. - Post-Processor — wrong state directory:
gorrent_processed.jsonnow goes todata_dirinstead ofdownload_dir, consistent withrss_history.json. - Post-Processor —
bashhardcoded:post_scriptnow runs the script directly as an executable instead of viabash, allowing native binaries and properly-configured scripts to work. - Security — Hardlink path traversal: Added validation that hardlink destination is always under
hardlink_dirto prevent malicious torrent names from escaping the target directory. - WebSocket — idle goroutine leak: WS handler now sends periodic pings and sets a 60s read deadline, disconnecting dead clients automatically.
- Status API —
BytesReadDataserialized as object: Fixedstats.BytesReadDatato use.Int64()so it serializes correctly as a number in JSON. - Performance — regex compiled per request: Infohash validation regex is now a package-level
varinstead of being recompiled on every download request. - Docker —
data/volume not mounted:docker-compose.ymlnow mounts./data:/dataso RSS history and post-processing state survive container restarts. - Docker — missing healthcheck:
docker-compose.ymlnow uses/healthendpoint for Docker health monitoring.
📦 Downloads
| Operating System | Download Archive |
|---|---|
| Windows (x64) | gorrent-1.6.0-windows-amd64.zip |
| Linux (x64) | gorrent-1.6.0-linux-amd64.tar.gz |
| Linux (ARM64) | gorrent-1.6.0-linux-arm64.tar.gz |
| macOS (Intel) | gorrent-1.6.0-darwin-amd64.tar.gz |
| macOS (Apple Silicon) | gorrent-1.6.0-darwin-arm64.tar.gz |
Docker Images (multi‑arch: amd64 + arm64):
- GHCR:
docker pull ghcr.io/x-name15/gorrent:v1.6.0 - GHCR Latest:
docker pull ghcr.io/x-name15/gorrent:latest
View Full CHANGELOG