Skip to content

v2.0.0

Choose a tag to compare

@got3nks got3nks released this 28 Dec 16:25

aMule Web Controller v2.0.0

Major Release - Complete Refactoring & New Features

This is a major release featuring a complete codebase refactoring and numerous new features that significantly enhance functionality and user experience. Version 2.0 brings professional-grade features like Sonarr/Radarr integration, GeoIP support, and a complete UI/UX overhaul.

🌟 Highlights

  • 🧙 Interactive Setup Wizard - Easy first-time configuration with guided steps and real-time validation
  • 🔗 Sonarr/Radarr Integration - Full *arr compatibility with Torznab indexer + qBittorrent download client APIs
  • 🌍 GeoIP Support - See geographic locations of upload peers with country flags and city information
  • 📂 Category Management - Organize downloads into color-coded categories
  • ⏸️ Pause/Resume - Full control over individual download states
  • 📊 Enhanced Statistics - Fixed calculation bugs, accurate historical data across all time ranges
  • 🎨 Improved UI/UX - Better mobile support, persistent preferences, enhanced dark mode
  • 🔧 Web-Based Settings - Manage all configuration through the interface with live testing

📥 Installation

Docker (Recommended)

# Create required directories
mkdir -p data logs
sudo chown -R 1000:1000 data logs

# Pull the latest image
docker pull g0t3nks/amule-web-controller:latest

# Start with docker compose
docker compose up -d

Quick Start

services:
  amule-web:
    image: g0t3nks/amule-web-controller:latest
    user: "1000:1000"
    ports:
      - "4000:4000"
    extra_hosts:
      - "host.docker.internal:host-gateway"
    volumes:
      - ./logs:/usr/src/app/server/logs
      - ./data:/usr/src/app/server/data
    restart: unless-stopped

See the README for complete installation instructions.

✨ What's New

Configuration Management

  • Interactive Setup Wizard - First-run guided configuration with real-time validation
  • Settings Page - Manage all settings through the web interface with live testing
  • Persistent Configuration - Settings saved to config.json with smart fallback to environment variables
  • Test Before Save - Validate individual sections or all settings before applying

Sonarr/Radarr Integration

  • Torznab Indexer API - Makes the ED2K network searchable from Sonarr/Radarr
  • qBittorrent Download Client - Works as a download client for *arr applications
  • Automatic Library Scanning - Configurable interval-based searches for missing content
  • Quality Profile Support - Respects quality upgrade preferences
  • Interactive Search - Manual searches directly from Sonarr/Radarr interface
  • Smart Rate Limiting - Prevents ED2K server flood protection bans
  • Search Result Caching - Efficient pagination handling

GeoIP Integration

  • MaxMind GeoLite2 Support - Display geographic location of upload peers
  • Country Flags - Visual country indicators in uploads view
  • City Information - Detailed location data when available
  • Docker Integration - Optional GeoIP updater container for automatic database updates
  • Graceful Degradation - Works without databases, feature is fully optional

Download Management

  • Category Management - Create, edit, and delete download categories with custom colors
  • Category Assignment - Organize downloads by assigning them to categories
  • Pause/Resume Downloads - Control individual download states
  • Multiple ED2K Links - Add multiple ED2K links at once (one per line)
  • Segments Bar - Visual representation of file parts availability
  • Detailed Source Counts - Shows total, current, transferring, and A4AF sources
  • Last Seen Indicators - Color-coded freshness indicators for complete sources

User Experience

  • Persistent Sorting - Sort preferences saved across sessions
  • Secondary Sorting - Alphabetical sorting when primary values are equal
  • Improved Mobile UI - Better touch interactions and responsive design
  • Enhanced Dark Mode - Improved contrast and visual hierarchy throughout

Historical Statistics

  • Interactive Charts - Beautiful Chart.js visualizations for speeds and transfers
  • Multiple Time Ranges - 24h, 7d, and 30d views with appropriate data aggregation
  • Accurate Calculations - Fixed all statistics calculation bugs
  • Peak Speed Tracking - True peak speeds from raw data, not averaged buckets
  • Database Optimization - Efficient queries for large datasets

🔧 Technical Improvements

Codebase Refactoring

  • Modular Server Architecture - Separated concerns into focused, maintainable modules
  • Component-Based Frontend - Organized React components with hooks and utilities
  • Improved Code Reusability - Extracted common patterns and utilities
  • Better Error Handling - Comprehensive error catching with user-friendly feedback
  • Performance Optimizations - Memoization, efficient queries, reduced re-renders

API Improvements

  • RESTful Endpoints - Proper HTTP methods and status codes
  • Consistent Response Format - Standardized JSON responses across all endpoints
  • Better Error Messages - Actionable error information for debugging
  • WebSocket Protocol - Cleaner message structure for real-time updates

Database Enhancements

  • Efficient Queries - New helper methods for common operations
  • Better Indexing - Optimized timestamp lookups for statistics
  • Cleanup Routines - Automatic old data retention management

🐛 Bug Fixes

Statistics Calculations

  • Fixed 30d totals showing less than 7d (100k record limit issue)
  • Fixed peak speeds calculated from averaged buckets instead of raw data
  • Fixed average speeds incorrectly averaging already-averaged bucket data
  • Now uses proper calculations: total/time for averages, MAX() for peaks

UI/UX Fixes

  • Secondary sorting now works alphabetically when primary values are equal
  • Improved dark mode consistency across all views
  • Better mobile touch interactions with improved tap targets
  • Proper category color rendering
  • More stable WebSocket reconnection handling
  • Smooth progress bar animations with accurate percentages

⚠️ Breaking Changes

Configuration Structure

The configuration structure has changed significantly. Automatic migration is handled on first run:

  • Old environment variable setups will continue to work
  • Settings are now stored in server/data/config.json
  • Configuration precedence: config file > env vars > defaults

API Endpoints

Some API endpoints have been restructured for better RESTful design. If you have custom integrations, review the updated API documentation in the README.

Docker Compose

  • Updated to modern Docker Compose format (removed version: field)
  • Changed from docker-compose to docker compose command
  • Requires creating data/ and logs/ directories with proper permissions before first run

📦 Upgrading from v1.x

  1. Backup your data:

    cp -r data data.backup
  2. Pull the new image:

    docker pull g0t3nks/amule-web-controller:latest
  3. Update docker-compose.yml:

    • Remove version: field
    • Update command from docker-compose to docker compose
    • Ensure data/ and logs/ directories exist with proper permissions
  4. Restart:

    docker compose down
    docker compose up -d
  5. Complete the setup wizard or review settings in the web interface

Your existing configuration will be automatically migrated to the new format.

📚 Documentation


Full Changelog: v1.0.1...v2.0.0


Hope you enjoy the new features and improvements! 🚀

If you encounter any issues, please open an issue on GitHub.