Skip to content

Releases: got3nks/amutorrent

v3.2.0 - Five-Client Support, Multi-Instance & User Management

27 Feb 15:53

Choose a tag to compare

🎉 Major Release - Five Download Clients & Multi-User

This release adds Deluge and Transmission as fully supported clients, introduces multi-instance support allowing multiple instances of the same client type, and a complete user management system with capability-based authorization. The entire client architecture has been rebuilt around an abstract, capability-driven model.

✨ Added

Deluge Integration

  • Full Deluge Support - Connect to Deluge via its WebUI JSON-RPC API
  • Category Sync - Bidirectional label synchronization between aMuTorrent and Deluge
  • Torrent Management - Add magnets and torrent files, pause/resume/delete
  • Transfer Statistics - Upload/download speeds and totals tracked in metrics
  • File Browser - View torrent file trees via GET /api/deluge/files/:hash
  • Configuration - Setup via Settings page or environment variables (DELUGE_ENABLED, DELUGE_HOST, DELUGE_PORT, DELUGE_PASSWORD)

Transmission Integration

  • Full Transmission Support - Connect to Transmission via its RPC API
  • Category Sync - Bidirectional category synchronization between aMuTorrent and Transmission
  • Torrent Management - Add magnets and torrent files, pause/resume/stop/delete
  • Transfer Statistics - Upload/download speeds and totals tracked in metrics
  • File Browser - View torrent file trees via GET /api/transmission/files/:hash
  • Configuration - Setup via Settings page or environment variables (TRANSMISSION_ENABLED, TRANSMISSION_HOST, TRANSMISSION_PORT, TRANSMISSION_USERNAME, TRANSMISSION_PASSWORD)

Multi-Instance Support

  • Multiple Instances Per Client Type - Run multiple aMule, rTorrent, qBittorrent, Deluge, or Transmission instances simultaneously
  • Dynamic Instance Management - Add, configure, and remove client instances from Settings without restart
  • Deterministic Instance IDs - Stable {type}-{host}-{port} identifiers for each instance
  • Compound Item Keys - Downloads identified by instanceId:hash for cross-instance uniqueness
  • Per-Instance Category Sync - Each instance syncs categories independently on connect
  • Environment Variable Configuration - First instance of each client type configurable via env vars; additional instances managed through Settings UI

User Management

  • Multi-User Authentication - Create and manage multiple user accounts with username/password login
  • Trusted Proxy SSO - Single sign-on via trusted proxy headers (e.g., Authelia, Authentik) with auto-provisioning of SSO users
  • Capability-Based Authorization - Fine-grained permissions: add_downloads, edit_downloads, edit_all_downloads, delete_downloads, clear_history, manage_categories
  • Admin Users - Full system access with user management abilities
  • Download Ownership - Downloads are owned by the user who added them; mutation restricted to owner (or users with edit_all_downloads)
  • Per-User WebSocket Filtering - Each user only sees downloads they own (admins see all)
  • Per-User API Keys - External API integrations (Torznab, qBittorrent compat) use individual API keys instead of shared password
  • User Management UI - Admin panel to create, edit, disable, and delete users with capability presets
  • Profile Management - Self-service password change
  • Session Invalidation - Disabling a user or changing capabilities force-disconnects their active sessions and WebSocket connections

Client Abstraction Layer

  • BaseClientManager - Shared base class for all client managers with common category/download CRUD interface
  • ClientRegistry - Runtime client dispatch by instance ID, replacing hardcoded client-type lookups
  • clientMeta.js - Static capability registry (categories, nativeMove, sharedFiles, stopReplacesPause, logs, trackers, search, etc.)
  • Capability-Driven Logic - Frontend and backend use capabilities instead of clientType === 'x' checks
  • Field Registry - Modular field definitions replacing monolithic field formatters

🐛 Fixed

  • IPv6 Peer Address Parsing - Fixed parsing of IPv6 addresses in qBittorrent peer data
  • Healthcheck Dual-Stack Binding - Healthcheck no longer fails when server binds to :: (IPv6 dual-stack)
  • Table Column Alignment - Fixed column alignment and width consistency across views
  • Mobile Download Speed - Error state items now show download speed in mobile card view
  • Login Delay Timer - Countdown timer correctly shown on page load after refresh

🔧 Changed

Docker

  • Node 22 - Upgraded Docker base image from Node 18 to Node 22
  • Improved Layer Caching - npm install runs before source copy for faster rebuilds
  • Simplified docker-compose - Uses env_file directive pointing to .env instead of inline commented environment variables
  • Removed qBittorrent Volume - No download directory mount needed (uses native API for moves/deletes)

Architecture

  • CategoryManager Refactored - Per-instance category sync, propagation to other clients on connect, importCategory()/linkAmuleId()/getCategoriesSnapshot() primitives
  • Per-Instance aMule IDs - Category-to-aMule-ID mapping is now per-instance instead of global
  • Download Normalizer - Extended with Deluge and Transmission normalizers
  • Unified Item Builder - isTorrentClient() helper, torrent utilities extracted to torrentUtils.js
  • WebSocket Handlers - Capability-gated actions, per-item ownership checks, filtered broadcasts

Frontend

  • Client Instance Management - Add/edit/remove client instances from Settings UI
  • Capability-Gated Navigation - Nav items, action buttons, and views filtered by user capabilities
  • Header User Dropdown - Profile and logout accessible from header
  • aMule Instance Selector - Dropdown to select target aMule instance for ED2K downloads
  • New Client Logos - Dedicated SVG icons for Deluge and Transmission

📦 Dependencies

Added

  • helmet - HTTP security headers
  • ipaddr.js - IP address parsing and validation
  • express-rate-limit - Request rate limiting

Updated

  • xmlbuilder2 3.x → 4.x

Removed

  • js-yaml - No longer needed

📝 Documentation

  • Deluge Integration Guide - New docs/DELUGE.md covering setup, Docker, and label sync
  • Transmission Integration Guide - New docs/TRANSMISSION.md covering setup, Docker, and group mapping
  • User Management Guide - New docs/USERS.md covering multi-user setup, capabilities, SSO, and API keys
  • Updated Configuration Docs - Multi-instance env vars, new client configs, user management settings
  • Updated Client Docs - aMule, rTorrent, qBittorrent docs refreshed for multi-instance

v3.1.3 - Configurable Bind Address & Security Hardening

14 Feb 08:46

Choose a tag to compare

✨ Added

  • Configurable Bind Address - New BIND_ADDRESS env var and server.host config field to control which network interface the server listens on (default: 0.0.0.0). Select dropdown in Settings and Setup Wizard shows detected interfaces. Restart warning shown when changed.
  • Network Interfaces API - New GET /api/config/interfaces endpoint returns available IPv4 network interfaces for bind address selection
  • Global Rate Limit - Second layer of brute force protection: 50 failed login attempts across all IPs within 15 minutes triggers lockout, defending against IPv6 rotation attacks
  • Login Delay Countdown - Live countdown timer on login button during server-side delay; countdown also shown in error message when rate-limited (429)
  • Exponential Login Delay - Replace fixed delay tiers with exponential formula (count * 1.5^(count-1) * 500ms) starting from first failed attempt
  • curl in Docker Image - Added curl to the Docker image for custom scripting use

🐛 Fixed

  • Login Delay Rounding - Round login delay to whole seconds for clean UI countdown alignment
  • Error Logging - Improved error logging with cause detail for all download clients
  • Website Carousel - Fixed slide counts after screenshot cleanup

🔧 Changed

  • Password Validator - Broadened special character validation to accept any non-alphanumeric character
  • Request Validation - Removed validateRequest middleware, inlined validation into authAPI and metricsAPI

v3.1.2 - UI Polish & Fixes

13 Feb 09:22

Choose a tag to compare

✨ Added

  • Notification Emojis & Redesign - Apprise notifications now use emoji titles (⬇️ ✅ 🏷️ 📦 🗑️), show client type in title with dot separator, and category with 🏷️ tag
  • MobileStatusTabs Icons - Status filter pills now show icons from STATUS_DISPLAY_MAP
  • CategoryModal qBittorrent Info - Path mapping section shows message that qBittorrent doesn't need mapping (uses native API)

🐛 Fixed

  • qBittorrent Tracker Domain - Use pre-computed trackerDomain instead of re-extracting
  • qBittorrent Downloaded Bytes - Use torrent.completed (verified bytes) instead of torrent.downloaded (includes overhead)
  • Progress Precision - qBittorrent and rTorrent progress now shows 2 decimal places instead of integers
  • aMule Downloaded Size - Completed shared files now correctly set downloaded = size
  • External Download Category - Category detection now works for all clients
  • Demo Mode Environment Variable - DEMO_MODE=true env var was overridden by config.json; now reads directly from process.env
  • Website Stale Screenshots - Removed 12 stale screenshots, updated carousels
  • Docs Sync Script - Screenshot sync now cleans destination before copying to prevent stale files

v3.1.1 - Bug Fixes & Improvements

12 Feb 10:35

Choose a tag to compare

✨ Added

  • File Browser for Script Path - Settings page script path field now has a browse button that opens a file picker modal
  • Category in Download Events - downloadAdded, downloadFinished, fileDeleted, and fileMoved events now include the category field
  • Delete Event - Now includes category field in the event payload

🐛 Fixed

  • fileMoved Event Category - Category was always null in fileMoved events due to missing field in DB row mapping and missing parameter in move queue calls
  • fileMoved Notification Destination - Apprise notification showed "To: Unknown" due to field name mismatch (destination vs destPath)
  • aMule Category Name Resolution - aMule category IDs are resolved to human-readable names for event scripting
  • aMule Relative Path in History - downloadFinished events showed relative .part paths (e.g., 003.part/file.mkv) instead of absolute paths; now only uses absolute paths from aMule shared files
  • Path Validation Race Condition - Multiple client connections triggering concurrent validateAllPaths() calls caused inconsistent results; now debounced with 500ms delay
  • Path Validation Error Detail - Permission check failures now show detailed diagnostics (uid, gid, directory ownership, file mode) instead of generic "Missing write permission"
  • qBittorrent Downloaded Bytes - Fixed incorrect field name (sizeDownloadeddownloaded) in history metadata for qBittorrent
  • qBittorrent Peer Data - Normalize peer data at source to match rTorrent format
  • qBittorrent Peer Counter - Fix peer counter for qBittorrent downloads in Active Downloads widget
  • Download History Ratio - Ratio values now rounded to 2 decimal places

🔧 Changed

  • UI Path Display - AlertBox supports breakAll prop for better word-breaking of long paths and hashes
  • Client Selector - BitTorrentClientSelector supports showFullName prop to always display full client name
  • Download Normalizer - rTorrent hash lowercased for consistency, added category alias and finishedTime field
  • File Selection Mode in Directory Browser - DirectoryBrowserModal supports mode="file" to browse and select files (directories still navigable)

📝 Documentation

  • Event Scripting README - Updated downloadAdded event documentation with new category field and JSON examples
  • Installation Docs - Updated for three-client support
  • Landing Page - Updated for three-client support

v3.1.0 - qBittorrent Support

11 Feb 10:37

Choose a tag to compare

🎉 Three-Client Support

This release adds full qBittorrent integration, making aMuTorrent a unified download manager for aMule, rTorrent, and qBittorrent simultaneously.

✨ Added

qBittorrent Integration

  • Full qBittorrent Support - Connect to qBittorrent via its WebUI API
  • Auto-Reconnect - Automatic connection recovery on disconnect
  • Torrent Management - Add magnets and torrent files, pause/resume/stop/delete
  • Category Sync - Bidirectional category synchronization between aMuTorrent and qBittorrent
  • Native File Moves - Uses qBittorrent's setLocation() API for efficient moves (no filesystem access needed)
  • Native File Deletion - Deletes via API (no volume mount required for delete operations)
  • Transfer Statistics - Upload/download speeds and totals tracked in metrics
  • Connection Status - Real-time status with port information in footer
  • Application Logs - View qBittorrent logs in the Logs page
  • Configuration - Full setup via Settings page or environment variables

Event Scripting Enhancements

  • File Path in Events - downloadFinished, fileDeleted, and categoryChanged events now include path and multiFile fields
  • Debug Script - New scripts/log-to-file.sh logs all event data for debugging
  • JSON Payload Examples - Complete examples for all 5 event types

🔧 Changed

UI Restructuring

  • Unified BitTorrent Section - Settings page combines rTorrent and qBittorrent under "BitTorrent Integration"
  • Client Filter Toggle - Header ED2K/BT toggle filters all BitTorrent clients as one group
  • Multi-Client Footer - Speed totals from all connected clients with per-client tooltip breakdown
  • Statistics Charts - Renamed from "rTorrent" to "BitTorrent" to reflect all BT clients
  • Client Icons - Distinct SVG icons for rTorrent and qBittorrent

Architecture Improvements

  • Extended download normalizer, unified item builder, data fetch service, metrics, auto refresh, config tester, and field formatters for qBittorrent support
  • Category management with bidirectional sync and per-client default paths
  • Native API-based move operations for qBittorrent

🐛 Fixed

  • aMule Delete Event - deletedFromDisk now correctly reports true when cancelling aMule downloads
  • Move Size Verification - Fixed incorrect size comparison for incomplete downloads
  • Path Translation - Fixed path mapping to handle both prefix matching and fallback patterns

📝 Documentation

  • New qBittorrent Integration Guide (docs/QBITTORRENT.md)
  • Updated all existing docs for three-client support
  • Event scripting docs with full JSON payload examples
  • Documentation website with GitHub Pages deployment

v3.0.2

08 Feb 10:56

Choose a tag to compare

✨ Added

  • Demo Mode - Generate random data for screenshots and showcasing the app without real clients. Enable with DEMO_MODE=true environment variable.

🐛 Fixed

  • Apprise CLI Detection - Fix detection of Apprise installed via pipx. Now searches common paths including ~/.local/bin, /usr/local/bin, and other standard locations.

📦 Docker

docker pull g0t3nks/amutorrent:3.0.2

v3.0.1

07 Feb 10:20

Choose a tag to compare

🐛 Fixes

  • Path Resolution - Fix path resolution for categories with pathMappings: null. Categories with a path but no pathMappings now correctly use path as the local path instead of falling back to Default category.

  • Version Check - Handle HTTP redirects in version check to support repo renames. Old images checking the previous repo name will now correctly follow the redirect to find new releases.

📦 Docker

docker pull g0t3nks/amutorrent:3.0.1

v3.0.0 - aMuTorrent

06 Feb 17:01

Choose a tag to compare

🎉 Major Release - Multi-Client Support & App Rebrand

This release transforms the app from an aMule-only controller into a unified download manager supporting multiple clients. The app has been rebranded to aMuTorrent to reflect its expanded capabilities.

✨ Highlights

  • rTorrent Integration - Full support via XML-RPC over HTTP with unified download views
  • Prowlarr Integration - Search for torrents across multiple indexers
  • Push Notifications - Apprise integration for 80+ services (Discord, Telegram, Slack, etc.)
  • Custom Event Scripting - Run your own scripts on download events
  • Configurable Table Columns - Show/hide and reorder columns per view
  • Category Path Management - Move downloads to category directories
  • Multi-Platform Docker - Images for linux/amd64 and linux/arm64

📦 Docker

docker pull g0t3nks/amutorrent:3.0.0

📖 Documentation

See CHANGELOG.md for complete details.

v2.2.0

16 Jan 09:34

Choose a tag to compare

aMule Web Controller v2.2.0

✨ Added

Authentication & Security

  • Web UI Password Protection - Optional password authentication with brute force protection (exponential backoff and IP lockout after 10 failed attempts)
  • API Authentication - Torznab and qBittorrent APIs now require authentication when web UI auth is enabled (API key = UI password)

Download History

  • History Tracking - Optional persistent download history with filtering and search

Mobile Redesign

  • New Home Dashboard - Mobile-optimized widgets for quick overview
  • Bottom Navigation Bar - Easy thumb-accessible navigation
  • Optimized Card Views - Improved mobile layouts for all views
  • Mobile Table Features - Sort and filter controls adapted for touch

Bulk Actions

  • Download Selection Mode - Mass pause/resume, category assignment, and delete
  • Shared Files Selection - Bulk ED2K link export

Enhanced File Views

  • Detailed Info Modals - Rich information dialogs for downloads and shared files
  • Context Menus - Right-click quick actions on downloads and shared files
  • Filter by Filename - Text filter for downloads, uploads, shared files, and search results
  • Items-per-page Selector - Configurable page sizes for all views
  • ED2K Link Export - Export links from shared files

System Monitoring

  • Disk Space Indicator - Real-time disk usage in footer
  • CPU Usage Indicator - System CPU load in footer
  • Hostname Resolution - Peer hostnames displayed in uploads view

UI Enhancements

  • Version Badge - Automatic update check and app version info
  • Font Size Toggle - Adjustable UI font size
  • Reload Shared Folders Button - New button in Shared Files view to rescan shared folders from disk

🔧 Changed

Build & Deployment

  • JavaScript Bundling - All frontend JS bundled into single file using esbuild
  • Updated bcrypt - Version 6.0.0 removes deprecated dependencies

Code Refactoring

  • Config Management - Refactored config.js/configAPI.js with improved secrets handling
  • Sensitive Env Vars - Environment variables for passwords/API keys now always override config.json and lock UI fields
  • Torznab/qBittorrent APIs - Refactored indexer and download client implementations
  • Frontend Architecture - Massive app.js refactoring with contexts, consolidated state management, simplified views
  • Batched WebSocket Updates - Reduced UI re-renders via autoRefreshManager
  • Deduplicated Code - Consolidated Sonarr/Radarr logic in configTester.js and arrManager.js

UI Improvements

  • Server Disconnect Button - Only shown on currently connected server
  • Header Tooltips - Added tooltips on navigation buttons
  • Tablet Layout Fixes - Improved sidebar and view layouts for tablets
  • Form Element Styles - Unified form styling across views
  • Settings Page - Reduced horizontal padding on mobile for more content width

🐛 Fixed

  • Arr Integration - Fixed automatic search not initializing when enabled from settings after startup
  • Sonarr TBA Episodes - Unreleased episodes (TBA) no longer trigger searches
  • Loading States - Fixed "no files" message shown instead of "loading" on slow connections
  • Chart Rendering - Fixed laggy home view by deferring chart rendering
  • Mobile Scroll - Fixed viewport auto-scroll to top on page changes
  • Theme Persistence - Theme selection now properly remembered
  • Light Mode - Fixed progress bar text visibility in downloads
  • iOS Safari - Fixed CSS viewport issues on iOS Safari
  • Loading Spinner - Fixed spinner CSS styling

📝 Documentation

  • Restructured Docs - Separated into focused guides (Configuration, Integrations, GeoIP, API, Development)
  • Docker Hub Link - Added link to Docker Hub repository
  • Auth Documentation - Added authentication setup for Torznab and qBittorrent APIs

v2.1.0

03 Jan 11:35

Choose a tag to compare

aMule Web Controller v2.1.0

New Features

  • Comprehensive monitoring dashboard on Home view (desktop)
  • Real-time active downloads and uploads widgets
  • 24h statistics with charts and metric cards
  • Quick search integration on dashboard
  • Auto-refresh every 15 seconds

Improvements

  • Improve Torznab category support for Prowlarr