KGet 1.7.0 โ download manager crate with redesigned GUIs, new builder API, WebDAV, yt-dlp, and bug fixes
โ Rust ๐ 2026-05-25 ๐ค surdeus ๐๏ธ 3Releasing v1.7.0 of KGet, a download manager library and CLI tool. This is the largest release so far, with changes
across the library API, both graphical frontends, and a number of bug and security fixes.
Library
The public API was rewritten. Entry points are kget::builder(url) for single downloads and kget::batch([...]) for
multiple files. Both expose fluent methods for connection count, speed limiting, proxy, checksums (SHA-256/512, SHA-1,
MD5, BLAKE3), retry config, and custom HTTP headers. .spawn() returns a Receiver for progress
tracking. .download_to_bytes() and .download_to_reader() handle in-memory use cases without filesystem writes.
Supported protocols: HTTP/HTTPS with parallel byte-range connections, FTP, SFTP, WebDAV, BitTorrent (librqbit,
torrent-native feature), Metalink (RFC 5854), yt-dlp.
GUIs
Both graphical frontends were fully redesigned. The egui GUI (Linux/Windows) now has a sidebar with per-category
download counts, system-adaptive dark/light theme, speed sparkline per active download, clipboard monitor,
drag-and-drop URL, and a history tab. The native macOS SwiftUI app received the same new features โ history tab
reading from the persistent history.json, drag-and-drop from browsers, clipboard monitor with a dismissable banner, a
Share Extension for sharing URLs directly from Safari โ along with a full layout overhaul using NavigationSplitView.
Bug and security fixes
- The parallel speed limiter was per-thread, so N connections at a 1 MB/s cap produced N MB/s actual throughput.
Replaced with a global Arc<Mutex> shared across rayon workers. - SFTP: a host-key verification failure was being caught and silently swallowed, effectively bypassing the check. Now
returns a hard error and aborts the connection. - validate_filename now rejects path traversal sequences (..), null bytes, filenames over 255 bytes, and Windows
reserved device names. - The simple downloader was retrying on 404/403/410. Permanent 4xx errors now fail immediately.
- File preallocation (set_len) was happening before confirming the server supports byte ranges, which could produce a
corrupted result on servers returning 200 instead of 206. Fixed.
Published on crates.io as Kget. Repo: GitHub - davimf721/KGet: KGet is a modern, lightweight download manager written in Rust for fast and reliable file downloads from the command line and native app for windows, linux and mac. ยท GitHub
Looking for feedback on the API design, and anyone willing to test on Linux or Windows where my coverage is thinner.
1 post - 1 participant
๐ท๏ธ Rust_feed