Skip to content

MakeMKV Auto Rip v1.0.0

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 12 Aug 09:48

[1.0.0] - 2025-08-12

Added

  • Modern Web UI - Complete graphical interface with real-time updates and responsive design
    • Interface accessible at http://localhost:3000
    • Real-time status updates via WebSocket connections
    • Live activity logs with auto-scrolling
    • Responsive design that works on desktop, tablet, and mobile
  • Interactive Operation Control - Stop running operations from web UI
    • Dynamic button states that change from "Start" to "Stop" during operations
    • Graceful process termination with SIGTERM → SIGKILL fallback
    • Real-time status tracking with canStop property
    • Visual feedback with color-coded buttons on web UI
  • CLI Integration for Web UI - Web UI uses actual CLI commands for reliability
    • All operations execute real CLI commands (npm run start, npm run load, npm run eject)
    • Future-proof: web UI automatically benefits from CLI updates
    • Real program output streaming to web interface
  • Advanced CLI Flags - New command line options for automation
    • --no-confirm flag to bypass "Rip or Dip?" prompt for automated ripping
    • --quiet flag to reduce verbose startup messages for cleaner output
    • Perfect for web UI context, automated scripts, docker or headless deployments, etc
  • MakeMKV version checking and validation - The application now automatically checks MakeMKV version compatibility and provides user-friendly error messages when the installed version is too old MakeMKV to allow ripping. It also reports the installed version and warns about available updates.
  • System Date Management - Temporarily change system date for MakeMKV operations (restored to network time after program finishes)
    • Configure via web UI with intuitive date/time picker interface
    • Support for date-only (2024-01-15) or date-time (2024-01-15 14:30:00) formats
    • Cross-platform support: Windows, macOS, and Linux with native system commands
    • Automatic date restoration after ripping operations complete
    • Administrative privileges required for reliable system date modification
    • One-click "Clear Date" button for easy reset to real system date when using the web config editor
  • Automatic MakeMKV path detection - The application now automatically detects the MakeMKV installation path across Windows, macOS, and Linux, greatly simplifying setup for users.
  • Refactored configuration loading and validation - Configuration loading and validation now handles missing or invalid custom MakeMKV paths gracefully, falling back to automatic detection when necessary (an install path for MakeMKV is no longer required).
  • Documentation updates - Documentation has been updated to reflect changes to configuration, including troubleshooting steps related to MakeMKV installation.
  • Complete project refactor with proper Node.js project structure
  • Modular architecture with clear separation of concerns into services, utilities, and CLI modules
  • Docker support - Full Docker containerization with multi-platform compatibility
    • Dockerfile builds MakeMKV from source (v1.18.1) on Debian bookworm
    • Includes required Linux tools for optical drives (udisks2, eject, udev)
    • Runs Web UI by default, exposes port 3000, uses a non-root user (added to the cdrom group)
    • Volumes for media/logs, health checks, and proper permissions
    • Docker Compose with bind-mounted config.yaml and device mappings
    • Default compose service now uses the pre-built Docker Hub image; local build available via build profile
  • NPM package publishing - Ready for npm registry distribution
    • Binary executable support (makemkv-auto-rip command)
    • Added Web UI binary (makemkv-auto-rip-web) for local installs
    • Proper package.json configuration for global installation
    • Development files excluded from published package
    • Optional dependencies for cross-platform compatibility
  • Cross-platform compatibility
    • Docker environment detection
    • Comprehensive test coverage for Docker functionality and cross-platform behavior
    • Linux-compatible MakeMKV executable paths
  • Advanced drive management - Separate configuration options for loading and ejecting drives
  • Flexible ripping modes - Choose between async (parallel) or sync (sequential) ripping for optimal SSD or HDD performance
  • Enhanced logging - Configurable 12hr/24hr time format options for console timestamps (defaults to 12hr)
  • Standalone drive commands - npm run load and npm run eject for drive operations without ripping
  • Docker management commands - Complete docker-compose workflow commands including npm run docker:build, docker:run, docker:stop, docker:logs, docker:clean, and docker:rebuild for clean-slate development
  • CI/CD automation
    • GitHub Actions edge pipeline builds multi-arch Docker image on pushes to master and tags as :edge
    • Release pipeline on tags publishes npm (stable → latest, pre-release → next), Docker (stable → latest, pre-release → next), and creates GitHub Releases
    • Release notes are sourced from the matching section in CHANGELOG.md
    • Docker Hub repository README is kept in sync from this project's README.md
    • New dedicated Tests workflow runs unit tests in CI/CD and uploads coverage to Codecov
      • Node.js matrix covers 20.x, 22.x, and 24.x
      • Coverage artifacts are uploaded and a summary is shown in the job output
      • Codecov integration provides a hosted coverage dashboard and PR annotations
    • Badges added to README.md to showcase project status:
      • Build status, Tests status, Coverage (Codecov)
      • License, NPM version/downloads
      • Docker image version/pulls/size
      • GitHub release/version/date, last commit, commit activity
      • Open issues/PRs, contributors
      • Supported OS platforms, Docker architectures, Node.js version, Module type (ESM), Testing framework (Vitest)
  • Parallel disc processing - Multiple discs now rip simultaneously instead of sequentially (originally completed by @Adam8234 and @ThreeHats --- Thank you!!!)
  • Enhanced error handling - Comprehensive error handling throughout the application
  • Improved logging - Structured logging with consistent formatting and colors
  • Configuration validation - Automatic validation of required configuration settings
  • Configurable drive loading delay - Users can now set custom delay times for drive loading operations, with the ability to disable delays entirely. The wait is disabled by default (only needed if you're ripping with certain USB or laptop/slimline drives that lack a retract mechanism).
  • Cross-platform drive operations - New optical drive utility supports Windows, macOS, and Linux for loading and ejecting optical drives without external dependencies
  • Hybrid Windows drive implementation - PowerShell WMI for accurate drive detection, native C++ addon using DeviceIoControl API for eject/load operations
  • Mount detection and waiting - Configurable wait and re-polling mechanism to prevent drives from being skipped due to slow OS media detection.
  • Windows uses 64 bit - Windows OS now uses the 64 bit version of makemkvcon (makemkvcon64.exe). Other OSes don't have seperate 32 vs 64 bit versions.
  • Configurable repeat mode - Users can now enable/disable repeat mode through configuration, allowing the application to exit after ripping instead of prompting again

Changed

  • Documentation - Main README.md highlights Docker as the recommended path; README-DOCKER.md contains expanded details
  • Documentation - README.md updated with comprehensive status badges (build/tests/coverage, ecosystem, and technical specs)
  • Packaging - package.json updated to include web assets and scripts in published package
  • Configuration format - Migrated from JSON (config/Default.json) to YAML (config.yaml) for improved readability and easier editing
  • Configuration structure - Reorganized into logical sections: paths, drives, ripping, etc for better organization
  • Path handling - Cross-platform path normalization with support for forward slashes on all platforms (no more escaped backslashes!)
  • Configuration validation - Enhanced validation with clearer error messages referencing config.yaml
  • Configuration drive options - Split ejectDVDs into separate loadDrives and ejectDrives options for granular control
  • Ripping behavior options - Added rippingMode option to choose between async/sync processing (defaults to async)
  • Logging system options - Restructured the config options to a logging section with timeFormat option for 12hr/24hr console timestamps (defaults to 12hr)
  • Cross-platform executable paths - MakeMKV executable path now adapts to Windows vs Linux vs macOS environments
  • All dependencies updated - All project dependencies have been updated to their latest versions
  • Removed moment and colors - Replaced with date-fns for date/time and chalk for colored output
  • Remove config - Replaced with yaml to fit the new configuration style
  • Project now supports the latest Node.js LTS version - Minimum required Node.js version raised to v20 (older versions may work, but are not officially supported by us or Node.JS as of this release date)
  • CI Tests matrix expanded - Continuous Integration now validates against Node.js 20.x, 22.x, and 24.x
  • Eliminated all batch files - Replaced with comprehensive npm commands
  • Project structure - Code organized into logical modules under src/ directory
  • Entry point - Now uses index.js as main entry point instead of AutoRip.js
  • Import system - Updated to ES6 modules throughout
  • Configuration management - Centralized YAML configuration handling with validation
  • User interface - Improved CLI with better prompts and messaging

Removed

  • All .bat files (AutoRip.bat, DriveLoader.bat, Install-Node-Packages.bat)
  • Monolithic AutoRip.js file (replaced with modular structure)
  • win-eject dependency - Replaced with optical drive commands and custom Windows addon for cross-platform support

Migration Notes

Configuration Updates Required:

  • Migrate from JSON to YAML: Replace config/Default.json with config.yaml

  • New YAML format example can be found in the included config.yaml file AND in the README.MD

  • Path format: Use forward slashes (/) instead of escaped backslashes (\) for all paths, regardless of system or platform

  • Docker: We highly recommend running in a containerized environment for most use cases, consider migrating today! Our docker image maintains full feature parity (except for faking the system time) with the standard program, defaults to the new Web UI, and helps manage MakeMKV itself on a deeper level.