Releases: docaghajani/udownload
Release list
UDM 1.2.1
UDM 1.2.1
UDM 1.2.1 is a maintenance release that fixes an intermittent SQLite concurrency
error in the authenticated Web UI introduced in 1.2.0.
Fixed
- Web UI authentication-setting reads now use the existing
WebDownloadServicere-entrant lock. - Concurrent
ThreadingHTTPServerrequest threads no longer access the
service-owned SQLite connection outside the Web UI service synchronization
boundary. - Fixes intermittent:
sqlite3.InterfaceError: bad parameter or other API misuse
- Adds a concurrent authenticated Web UI stress test with 480 requests.
Authentication behavior retained
The Web UI authentication design from 1.2.0 is unchanged:
- username/password configured in UDM → Options
- salted
PBKDF2-HMAC-SHA256password hashes - in-memory authenticated sessions
HttpOnly,SameSite=Strictsession cookies- session expiry
- logout
- failed-login rate limiting
- CLI credential management
Web UI CLI
udownload web auth --user admin
udownload web status
udownload web enable --port 8600
udownload web disableValidation performed for 1.2.1
- Python compilation checks
- built-in UDM self-test
- Web UI self-test
- JavaScript syntax checks when Node.js is available
- AppStream XML validation
- authenticated Web UI concurrency stress test
- 16 concurrent workers
- 30 authenticated requests per worker
- 480 authenticated requests total
git diff --check- staged diff validation
Documentation
See:
README.mddocs/WEB_UI.mddocs/RELEASE_1.2.1.md
UDM 1.2.0
UDM 1.2.0
UDM 1.2.0 adds password-protected Web UI access with configurable credentials,
secure password hashing, authenticated browser sessions, logout, session expiry,
login rate limiting, and CLI credential management.
Web UI authentication
The browser interface now requires a username and password before access to the
download dashboard or API is granted.
Credentials are configured in:
UDM → Options
New settings:
Enable Web UI
Web UI port
Web UI username
Web UI password
The Web UI password is not stored in plaintext. UDM stores a per-password
salted PBKDF2-HMAC-SHA256 hash.
Login behavior
Opening the Web UI root address always displays the sign-in page:
http://SERVER_IP:8600/
After successful authentication, the browser is redirected to the protected
/app dashboard.
Authenticated sessions:
- use cryptographically random session tokens
- are stored only in UDM server memory
- use an
HttpOnlybrowser-session cookie - use
SameSite=Strict - expire after inactivity
- are invalidated when the configured credentials change
- are invalidated when UDM restarts
The Web UI also includes an explicit Log out action.
Login protection
Repeated failed sign-in attempts are rate-limited.
Existing same-origin and custom-header CSRF protections remain active in
addition to username/password authentication.
Web UI CLI
Credentials can be configured from the terminal without placing the password in
shell history or process arguments:
udownload web auth --user adminUDM securely prompts for the password and confirmation.
Then manage the Web UI with:
udownload web status
udownload web enable --port 8600
udownload web disableExisting Web UI capabilities retained
- Add a URL and start immediately.
- Add a URL to the queue.
- Schedule downloads.
- Search and filter downloads.
- View live progress, speed, ETA and status.
- Pause, resume, start and remove downloads.
- Pause/resume the full queue.
- Clear completed entries.
- Share the same UDM database and aria2 engine as the desktop application.
- Keep the desktop UDM scheduler as the single scheduler owner.
Security note
The built-in Web UI still serves plain HTTP.
For a trusted LAN or VPN this can be appropriate. For access beyond a trusted
private network, use an HTTPS reverse proxy or VPN rather than directly exposing
the built-in Web UI port to the public Internet.
Local source commands
Check version:
cd ~/Projects/udownload
python3 src/udownload.py --versionConfigure credentials:
python3 src/udownload.py web auth --user adminEnable the Web UI:
python3 src/udownload.py web enable --port 8600Run UDM from the source checkout:
python3 src/udownload.pyValidation performed for 1.2.0
- Python compilation
- UDM built-in self-test
- Web UI self-test
- password hash verification
- JavaScript syntax checks
- Web auth integration test
- root login page
- unauthenticated API rejection
- invalid-password rejection
- successful login
- session cookie creation
- protected
/app - authenticated API access
- root still showing login
- logout
- session invalidation
- AppStream XML validation
git diff --check- staged diff validation
Documentation
See:
README.mddocs/WEB_UI.mddocs/RELEASE_1.2.0.md
UDM 1.0.19
UDM 1.0.19
UDM 1.0.19 introduces an optional browser-based Web UI for controlling the
same download queue and aria2 transfer engine used by the native GTK4 desktop
application.
This release also adds complete command-line control for enabling, disabling,
inspecting and configuring the Web UI.
Highlights
Web UI
- Optional browser-based control panel for UDM.
- Enable or disable it from UDM → Options.
- Configurable listening port; the default is 8600.
- Open it from another trusted device with:
http://SERVER_IP:8600/
- Add a URL and start it immediately.
- Add a URL to the queue without starting it.
- Schedule downloads.
- Search and filter the shared download list.
- View live progress, status, transfer rate and ETA.
- Pause, resume, start and remove queue entries.
- Uses the same UDM database and aria2 engine as the desktop application.
- Keeps the existing UDM scheduler as the single scheduler owner.
Web UI command line
The Web UI can now be controlled without opening the Options dialog:
# Show saved Web UI status and port
udownload web status
# Enable with the currently saved/default port
udownload web enable
# Enable and set a port
udownload web enable --port 8600
# Disable
udownload web disableWhen the desktop application is already running, Web UI setting changes are
detected and applied within a few seconds. If UDM is not running, the setting is
saved and takes effect the next time UDM starts.
Security
The Web UI in UDM 1.0.19 is intended for a trusted LAN or VPN.
This release does not include a public-facing Web UI login screen. Do not
forward the Web UI port directly from the public Internet. For Internet access,
use a trusted VPN/private-network layer.
The existing SSH-based UDM Remote feature remains the recommended mechanism for
restricted remote download commands over SSH.
Existing capabilities retained
UDM 1.0.19 keeps the functionality introduced in previous releases, including:
- aria2-powered segmented downloads
- pause, resume and cancel
- resumable partial downloads
- queue management
- one-time and daily scheduling
- download history and categories
- local CLI download control
- SSH-based Remote downloads
- restricted Remote users
- SSH key and password authentication
- Chrome, Chromium and Firefox Native Messaging integration
- live progress dialogs
- download-complete workflow
- drag completed files to other applications
- filename resolution before CLI/Remote insertion
- duplicate aria2 GID/path protection
Local CLI examples
Add a URL to the queue:
udownload add "https://example.com/file.iso"Start immediately:
udownload add "https://example.com/file.iso" --nowSchedule:
udownload add "https://example.com/file.iso" --at "2026-08-15 22:30"SSH Remote example
udownload remote "https://example.com/file.iso" \
--server 23.53.215.63 \
--user usrudm \
--nowValidation performed for 1.0.19
- Python compilation checks
- built-in UDM self-test
- Web UI self-test
- isolated Web UI CLI enable/status/disable tests
- invalid Web UI port validation
- JavaScript syntax check
git diff --check
Documentation
The README and Web UI documentation include:
- UDM 1.0.19 overview
- Web UI setup
- configurable port instructions
- browser access example
- CLI enable/disable/status commands
- trusted LAN/VPN security guidance
See:
README.mddocs/WEB_UI.md
Source checkout
git clone --branch v1.0.19 --depth 1 \
https://github.com/docaghajani/udownload.git \
udownload-1.0.19Then:
cd udownload-1.0.19
python3 src/web_server.py --self-test
python3 src/udownload.py --self-test
python3 src/udownload.py --versionExpected version:
UDM 1.0.19
Thank you to everyone testing and improving UDM.
UDM 1.0.18
UDM 1.0.18
UDM 1.0.18 adds command-line download control, secure SSH-based Remote downloads,
improved filename resolution, and smoother live list interaction.
Remote downloads
UDM can now receive download commands from another computer over SSH.
- Added a Remote setup dialog.
- Added dedicated Remote usernames and passwords.
- Remote accounts are restricted to UDM download commands instead of receiving a normal interactive shell.
- Remote passwords use the normal Linux account password mechanism and are not stored in the UDM settings database.
- SSH TCP forwarding, agent forwarding, X11, tunnels and TTY are disabled for the restricted Remote group.
- Default external Remote port is 8347.
- Typical router/NAT setup is
TCP 8347 → target LAN IP:22. - Commands can be sent from another UDM installation.
- Commands can also be sent directly with OpenSSH.
- Windows OpenSSH and PuTTY/Plink are supported.
- Password input is handled by SSH with terminal echo disabled.
- SSH private-key authentication is supported.
Example from another UDM installation:
udownload remote "https://example.com/file.iso" \
--server 23.53.215.63 \
--user usrudm \
--nowExample using OpenSSH directly:
ssh -p 8347 usrudm@23.53.215.63 \
'udownload add "https://example.com/file.iso" --now'Command line
Downloads can now be added without opening the main GUI.
Queue a download:
udownload add "https://example.com/file.iso"Start immediately:
udownload add "https://example.com/file.iso" --nowChoose a destination:
udownload add "https://example.com/file.iso" \
--path "$HOME/Downloads/ISO" \
--nowSchedule a download:
udownload add "https://example.com/file.iso" \
--at "2026-08-13 22:30"Filename resolution
CLI and Remote additions now wait for a usable filename before inserting the
download into the database. UDM no longer silently creates a generic download
entry when the file name cannot be resolved.
Main window
- Active download rows continue updating while their context menu remains open.
- The main list refreshes more frequently for smoother live status information.
- Remote is available from the toolbar and application menu.
Version metadata
Application, AppStream metadata, browser integration manifests and native host
metadata are updated to 1.0.18.
Documentation
The README now includes:
- local CLI examples
- Remote server setup
- router/NAT instructions
- UDM-to-UDM Remote commands
- direct OpenSSH commands
- Windows OpenSSH examples
- PuTTY/Plink examples
- password and SSH-key authentication details
Thank you to everyone who tested the 1.0.18 release candidate.
UDM 1.0.18 RC1
UDM 1.0.18 RC1
UDM 1.0.18 RC1 introduces command-line downloads and secure SSH-based Remote control,
plus a set of UI and download-list improvements.
Remote control
- Added a Remote configuration dialog.
- Added dedicated Remote users for authenticated SSH access.
- Remote users are restricted to UDM download commands instead of receiving a normal shell.
- The Remote password is handled by Linux and is not stored in the UDM settings database.
- Disabled SSH TCP forwarding, agent forwarding, X11, tunnels and TTY for the restricted Remote group.
- Default external Remote port is 8347.
- Router/NAT setup uses
8347 → target LAN IP:22. - Remote commands can be sent from another UDM installation.
- Remote commands can also be sent directly with OpenSSH.
- Windows OpenSSH and PuTTY/Plink examples are documented.
- Password entry is handled by the SSH client with terminal echo disabled.
- SSH private-key authentication remains supported.
Command line
New local CLI commands:
udownload add "https://example.com/file.iso"
udownload add "https://example.com/file.iso" --now
udownload add "https://example.com/file.iso" --path "$HOME/Downloads"
udownload add "https://example.com/file.iso" --at "2026-08-13 22:30"New Remote command:
udownload remote "https://example.com/file.iso" \
--server 23.53.215.63 \
--user usrudm \
--nowThe Remote port defaults to 8347.
Filename resolution
CLI additions now resolve a usable filename before inserting the download into the
database. If neither the server nor URL provides a usable filename, UDM fails instead
of creating a generic download entry.
Main-window interaction
- Active download rows continue refreshing while a context menu is open.
- Download-list refresh interval is reduced for more responsive live information.
- Added a visible Remote action in the main toolbar and application menu.
Version
Application, AppStream metadata, browser integration manifests and native host are
updated to version 1.0.18.
Testing
This is an RC1 / pre-release intended for testing before the final 1.0.18 release.
Please report regressions or Remote/CLI issues through GitHub Issues.
UDownload 1.0.17
UDownload 1.0.17
UDownload 1.0.17 is a cumulative release containing the download workflow, browser integration, progress-dialog and transfer-control improvements developed since v1.0.12.
Download workflow
- Added an IDM-style Download Complete dialog.
- Added Address and Saved path information.
- Added Open, Open with and Open folder actions.
- Added drag-and-drop support for completed files.
- Completed files can be dragged to file managers and compatible applications.
- Added an option to disable the Download Complete dialog with confirmation.
- The dialog can be enabled again from Options.
Download Progress
- Added Minimize support.
- Active, paused and waiting downloads reopen Download Progress on double-click.
- Resuming a download from the main window reopens its Progress dialog.
- Only one Progress dialog is kept for each download.
- Removed the redundant standalone Close button.
- Moved Show details, Minimize, Pause/Resume and Cancel into the standard dialog footer.
Pause / Resume / Cancel
- Reworked transfer control to use the live aria2 state instead of stale database state.
- Moved transfer RPC operations away from the GTK main thread.
- Fixed Pause failing after Resume.
- Fixed Progress dialogs becoming unresponsive after repeated Pause/Resume operations.
- Added hard-stop handling for downloads that continued transferring after aria2 reported them as paused.
- Detects and stops duplicate aria2 GIDs writing to the same file.
- Partial files remain resumable after Pause or Cancel.
- Resume continues the existing partial file instead of creating a duplicate filename.
- X, Minimize and other window actions remain responsive while transfer operations run.
Browser integration
- Renamed browser menu actions to “Download with UDownload”.
- Improved Chrome/Chromium native messaging error reporting.
- Added native-host repair support.
- Improved native-host executable handling.
- Updated Chrome and Firefox integration versions.
Other improvements
- Improved full-row context-menu interaction.
- Download Later now queues downloads without inventing a schedule.
- Starting a download opens its Progress dialog.
- Improved synchronization between aria2, the database and the GTK UI.
UDownload 1.0.12
UDownload 1.0.12
Changes:
- Redesign Download File Info with a more IDM-like workflow
- Show resolved file name, type icon and file size before downloading
- Remember download folders separately for each file category
- Make Download Later add the item to the queue unless a schedule is explicitly selected
- Add a live download progress window after Start Download
- Show downloaded bytes, percentage, transfer rate and time left
- Add Pause, Resume and Open actions to the progress window
- Add a per-download speed limiter
- Add per-download completion options
- Make the right-click context menu available across the full row area, not only over text
UDownload 1.0.11
UDownload 1.0.11
Changes:
- Add a full queue scheduler window
- Add one-time and daily scheduling
- Add selectable weekdays
- Add queue start and stop times
- Add configurable retry count for failed downloads
- Add per-queue simultaneous download limits
- Add queue file ordering
- Add custom queue creation and deletion
- Add Start Now, Stop and Apply controls
- Add open-file, exit-application and system shutdown completion actions
- Persist scheduler settings separately for each queue
UDownload 1.0.9
UDownload 1.0.9
Changes:
- Fix Time Left calculation and display
- Add a dedicated Progress percentage column
- Autofill Add URL from the clipboard
- Resolve the real filename immediately after a URL is entered
- Automatically avoid filename collisions with (1), (2), (3), ...
- Preserve manually edited Save as filenames
UDownload 1.0.8
UDownload 1.0.8
Fixes:
- Resolve filenames for indirect download URLs
- Follow HTTP redirects before download
- Probe remote metadata with HEAD and ranged GET
- Detect filenames from Content-Disposition
- Preserve browser Cookie, Referer and User-Agent during metadata resolution
- Let aria2 determine the filename when metadata is inconclusive
- Synchronize the actual aria2 output filename back to the UDownload UI
- Preserve filenames manually entered by the user