Skip to content

Releases: AnInsomniacy/motrix-next

v3.7.2-beta.1 — Auto-Shutdown Reliability & Dialog Unification

18 Apr 11:07

Choose a tag to compare

What's Changed

This beta addresses critical reliability issues in the auto-shutdown feature and unifies all confirmation dialog styling across the application.

🐛 Bug Fixes

  • Fixed auto-shutdown not re-triggering after cancellation — The shutdown_triggered flag reset was inside its own guard (if !shutdown_triggered), making it dead code. Active-download tracking now runs unconditionally so the flag properly resets when new downloads appear
  • Fixed BT/magnet downloads bypassing shutdown detection — An early return in onBtComplete for torrent cleanup was preventing checkShutdownCondition() from being called
  • Fixed cargo clippy lint — Suppressed type_complexity on a compile-time type assertion test in power.rs

🛠 Improvements

  • Unified confirmation dialog styling — Migrated both the exit confirmation dialog and auto-shutdown countdown dialog from NModal preset="card" to NModal preset="dialog" type="warning", matching the engine restart dialog's visual style (⚠️ icon in title, larger bold title, native NDialog action buttons)
  • Dual-action shutdown dialog — "Disable Auto-Shutdown" permanently turns off the setting; "Skip This Time" dismisses the current countdown while keeping the preference enabled for future tasks
  • Right-aligned remember-choice checkbox — The "always minimize to tray" checkbox now aligns with the action buttons

📦 Downloads

Platform Architecture File
macOS Apple Silicon · Intel .dmg
Windows x64 · ARM64 -setup.exe
Linux x64 · ARM64 .AppImage .deb

v3.7.1 — Lightweight Mode & Autostart Fixes

17 Apr 23:36

Choose a tag to compare

What's Changed

This release resolves critical issues with lightweight mode and autostart behavior, ensuring the WebView lifecycle is correctly managed across all platforms.

✨ New Features

  • Browser extension auto-submit — Downloads initiated from the browser extension can now be automatically submitted without manual confirmation.

🐛 Bug Fixes

  • Lightweight mode now works on autostart — When autostart + lightweight mode were both enabled, the WebView process (~300MB RAM) remained alive in the background until the user manually opened and closed the window. The WebView is now correctly destroyed after engine initialization completes. Fixes #209.
  • Autostart no longer re-hides recreated windows — Fixed a bug where windows recreated in lightweight mode (e.g. via tray click) were incorrectly hidden again because the autostart flag persisted across the process lifetime. Introduced an irreversible cold-start lifecycle state to resolve the race condition. Fixes #206.
  • Improved resource detection — URL and magnet link detection is now case-insensitive and correctly rejects bare protocol prefixes without a host.

📦 Downloads

Platform Architecture File
macOS Apple Silicon · Intel .dmg
Windows x64 · ARM64 -setup.exe
Linux x64 · ARM64 .AppImage .deb

v3.7.1-beta.3 — Lightweight Mode Autostart Fix

17 Apr 09:58

Choose a tag to compare

What's Changed

This release fixes a critical memory optimization gap where lightweight mode failed to destroy the WebView process during autostart, causing ~300MB of unnecessary RAM usage until the user manually opened and closed the window.

🐛 Bug Fixes

  • Lightweight mode now works on autostart — When autostart + lightweight mode are both enabled, the WebView is now correctly destroyed after engine initialization completes, matching the behavior of normal window close. Fixes #209.

🛠 Improvements

  • New minimize_to_tray IPC command — Exposes the existing handle_minimize_to_tray() code path (used by close button and Cmd+W) as a frontend-callable command, enabling programmatic WebView lifecycle control.

📦 Downloads

Platform Architecture File
macOS Apple Silicon · Intel .dmg
Windows x64 · ARM64 -setup.exe
Linux x64 · ARM64 .AppImage .deb

v3.7.1-beta.2 — Lightweight Mode Window Restore Fix

17 Apr 01:23

Choose a tag to compare

What's Changed

This release fixes a persistent window restoration bug in lightweight mode, and adds browser extension auto-submit support.

🐛 Bug Fixes

  • Fixed tray window restore requiring two clicks (#206) — In lightweight mode, clicking the tray icon to restore the window after closing it would flash the window and immediately hide it, requiring a second click. Root cause: is_autostart_launch() reads process argv which never changes — when the destroyed window was recreated, the frontend re-applied autostart-hide logic. Fixed by introducing AppLifecycleState that tracks cold-start vs runtime phase, ensuring recreated windows always show correctly.

✨ New Features

  • Extension auto-submit — New "Skip confirmation" setting to bypass the Add Task dialog for browser extension downloads. Hierarchical toggles for HTTP, Magnet, Torrent, and Metalink link types.

📦 Downloads

Platform Architecture File
macOS Apple Silicon · Intel .dmg
Windows x64 · ARM64 -setup.exe
Linux x64 · ARM64 .AppImage .deb

v3.7.1-beta.1 — Clipboard Detection Fix

16 Apr 10:25

Choose a tag to compare

What's Changed

Fixes the clipboard auto-detection settings being non-functional, and hardens the URL detection logic.

🐛 Bug Fixes

  • Clipboard settings now actually work — The per-protocol toggles in Settings → Clipboard Detection (HTTP, FTP, Magnet, Thunder, BT Hash) were fully implemented but never wired to the actual detection logic. Disabling HTTP detection had no effect. This is now fixed (#193)

🛠 Improvements

  • Case-insensitive protocol matching — Uppercase URLs like HTTP://EXAMPLE.COM/file.zip are now correctly detected
  • Bare protocol rejection — Clipboard content containing only a bare protocol prefix (e.g. https:// with no host) is no longer treated as a downloadable resource

📦 Downloads

Platform Architecture File
macOS Apple Silicon · Intel .dmg
Windows x64 · ARM64 -setup.exe
Linux x64 · ARM64 .AppImage .deb

v3.7.0 — Lightweight Mode, GeoIP Peers & Native Backend

16 Apr 05:32

Choose a tag to compare

What's Changed

A major architectural release that migrates core download logic from TypeScript to a native Rust backend, introduces Lightweight Mode for dramatically reduced memory usage, adds GeoIP peer geolocation, and fixes multiple native UI issues across platforms.

✨ New Features

  • Lightweight Mode — Destroys the WebView when minimized to tray, reducing memory usage by ~150 MB. All tray actions, Dock badge, and progress bar continue working natively in Rust. Auto-links with tray settings for seamless UX
  • GeoIP Peer Resolution — Displays country flags and locale-aware country/continent names next to BitTorrent peers using the bundled DB-IP database
  • Task Detail Dates — Shows "Added At" and "Completed At" timestamps in the task detail panel with locale-aware formatting across all 26 languages (#198)
  • Structured BT History Metadata — BT/magnet tasks now persist full file lists and announce lists as JSON in history records, enabling correct multi-file deletion and folder-opening from the history view

🛠 Improvements

  • Native Rust aria2 client — Migrated aria2 JSON-RPC communication from TypeScript to a native Rust WebSocket client, improving reliability and enabling backend-only operation in lightweight mode
  • Modular service architecture — Task store and runtime services refactored into a clean service-based architecture with dedicated modules for stat polling, speed scheduling, and task monitoring
  • Native tray event handling — All tray menu actions (pause-all, resume-all, new-task, quit) handled directly in Rust, ensuring functionality when the WebView is destroyed
  • macOS Dock progress bar — Implemented a custom MotrixProgressIndicator class (subclass of NSProgressIndicator) with drawRect: override for correct Dock tile rendering
  • Platform-gated configuration — macOS/Windows-only config fields (dock_badge_speed, show_progress_bar) are now #[cfg]-gated, eliminating dead code warnings on Linux
  • Structured logging — Replaced scattered console.* calls with a unified structured logger and persistent pre-flight logging in GPU guard
  • Simplified MTooltip — Removed global state and cooldown logic for cleaner tooltip behavior

🐛 Bug Fixes

  • Fixed macOS Dock progress bar not rendering at all (standard NSProgressIndicator does not draw in NSDockTile)
  • Fixed BT task deletion failing due to raw infoHash strings in history metadata instead of structured JSON
  • Suppressed noisy maxminddb log output and simplified peer tracker column layout

📦 Downloads

Platform Architecture File
macOS Apple Silicon · Intel .dmg
Windows x64 · ARM64 -setup.exe
Linux x64 · ARM64 .AppImage .deb

v3.7.0-beta.2 — Lightweight Mode Reliability & Task Detail Dates

16 Apr 02:02

Choose a tag to compare

What's Changed

This beta focuses on lightweight mode reliability: native tray/Dock elements now work correctly when the WebView is destroyed, BT task metadata is properly persisted for accurate file management, and the macOS Dock progress bar renders correctly using a custom NSProgressIndicator subclass.

✨ New Features

  • Task detail dates — The task detail panel now displays "Added At" and "Completed At" timestamps in the General tab, with locale-aware formatting across all 26 languages (#198)
  • Structured BT history metadata — BT/magnet tasks now persist full file lists and announce lists as JSON in history records, enabling correct multi-file deletion and folder-opening from the history view

🛠 Improvements

  • Native Rust-side tray handling — All tray menu actions (pause-all, resume-all, new-task, quit) are now handled directly in Rust, ensuring they work even when the WebView is destroyed in lightweight mode
  • macOS Dock progress bar — Implemented a custom MotrixProgressIndicator class (subclass of NSProgressIndicator) with a drawRect: override to correctly render the progress bar in the Dock tile
  • Platform-gated configurationdock_badge_speed and show_progress_bar fields are now platform-gated, eliminating dead code warnings on non-applicable platforms

🐛 Bug Fixes

  • Fixed macOS Dock progress bar not rendering (standard NSProgressIndicator does not draw in NSDockTile without a custom drawRect: override)
  • Fixed clippy lint failures: replaced CStr::from_bytes_with_nul().unwrap() with c"" literal, removed redundant match and let-binding patterns

📦 Downloads

Platform Architecture File
macOS Apple Silicon · Intel .dmg
Windows x64 · ARM64 -setup.exe
Linux x64 · ARM64 .AppImage .deb

v3.7.0-beta.1 — Rust Backend Architecture Migration & Lightweight Mode

15 Apr 12:23

Choose a tag to compare

Caution

Major architecture refactor — may be unstable. This release migrates all window lifecycle control and aria2 engine management from TypeScript to the Rust backend. Please report any issues you encounter.

What's Changed

This is a significant architectural refactoring release. The core control plane — aria2 JSON-RPC client, task lifecycle, runtime services, and all window close/hide/destroy logic — has been migrated from the TypeScript frontend to the Rust backend, resulting in a more reliable and performant application.

✨ New Features

  • Lightweight Mode — Destroys the WebView rendering process when minimizing to tray, significantly reducing background memory usage. Window is fully reconstructed on tray click with automatic state recovery
  • Lightweight ↔ Tray auto-linkage — Enabling lightweight mode automatically enables minimize-to-tray; disabling tray mode automatically disables lightweight mode

🛠 Improvements

  • Rust-native aria2 client — JSON-RPC communication with aria2 now runs entirely in Rust with typed request/response handling
  • Rust-native runtime services — Global stat polling, speed limit scheduling, and task lifecycle monitoring moved to Rust async tasks
  • Unified close path architecture — All 5 window close paths (Alt+F4, taskbar close, custom ✕ button, Cmd+W, traffic light) now route through a single Rust handler (handle_minimize_to_tray)
  • Service-based module layout — Backend reorganized into services/, aria2/, and task/ module directories following DRY principles
  • Localization — Lightweight mode fully translated across all 26 supported languages

🐛 Bug Fixes

  • Fixed Windows/Linux custom ✕ button bypassing Rust-side lightweight mode logic (was calling appWindow.hide() directly instead of routing through CloseRequested)
  • Fixed redundant JS-side hide() + set_dock_visible calls in MainLayout.vue that conflicted with Rust handler
  • Fixed corrupted locale strings in Turkish, Ukrainian, Italian, and Catalan translations

📦 Downloads

Platform Architecture File
macOS Apple Silicon · Intel .dmg
Windows x64 · ARM64 -setup.exe
Linux x64 · ARM64 .AppImage .deb

v3.6.11-beta.2 — GeoIP Localization & Tooltip Unification

14 Apr 07:55

Choose a tag to compare

What's Changed

This release adds localized country/continent names for BT peer geolocation and unifies all tooltip behavior across the application.

✨ New Features

  • Localized peer geolocation — BT peer country and continent names now display in the user's current language (supports de, en, es, fr, ja, pt-BR, ru, zh-CN), with automatic English fallback for unsupported locales

🛠 Improvements

  • Unified tooltip system — Migrated all native HTML title tooltips to the project's MTooltip component for consistent 500ms delay across the entire app (task names, version badges in About panel and Preferences)
  • Simplified MTooltip — Removed the global cooldown/reshow state machine that caused instant-show bugs inside modals; tooltips now use a fixed, predictable delay

🐛 Bug Fixes

  • Fixed About panel tooltips appearing instantly (0ms) due to NTooltip emitting false update:show events on mount inside NModal
  • Fixed v-if/v-else compilation errors when wrapping conditional elements with MTooltip

📦 Downloads

Platform Architecture File
macOS Apple Silicon · Intel .dmg
Windows x64 · ARM64 -setup.exe
Linux x64 · ARM64 .AppImage .deb

v3.6.11-beta.1 — Peer Geolocation & Logging Hardening

14 Apr 05:42

Choose a tag to compare

What's Changed

This beta introduces BT peer geolocation with country flag display and hardens the application's logging infrastructure for improved diagnostics.

✨ New Features

  • Peer Geolocation — Country flags (🇩🇪 🇯🇵 🇺🇸) now appear next to peer IP addresses in the task detail panel, with country and continent info on hover. Powered by DB-IP's dbip-country-lite.mmdb bundled database via maxminddb crate
  • Browser Extension Badge — Added browser extension download badge and feature description to README

🛠 Improvements

  • Logging Persistencegpu_guard pre-flight crash recovery events now write to the main motrix-next.log file instead of ephemeral stderr, making Issue #188-class problems diagnosable from user-submitted logs
  • Log Noise Reduction — Suppressed verbose DEBUG output from maxminddb, sqlx, and zbus crates via level_for() filters, reducing log file noise by ~30%
  • Frontend Log Standardization — Replaced 5 remaining console.log/console.error calls in main.ts and Basic.vue with the centralized logger utility for proper file persistence
  • Sentinel Error Reporting — GPU crash sentinel file operations (write/remove) now report failures instead of silently discarding errors

📦 Downloads

Platform Architecture File
macOS Apple Silicon · Intel .dmg
Windows x64 · ARM64 -setup.exe
Linux x64 · ARM64 .AppImage .deb