KGet 1.6.2
KGet 1.6.2
Fixed
- SFTP downloads were completely non-functional. The previous implementation passed the full
sftp://…URL string directly toTcpStream::connectand used it as the remote file path, causing an immediate connection error on every SFTP call. The module is now fully rewritten:- URL is parsed to extract
host,port,username, andremote_pathcorrectly. - Authentication tries in priority order: password embedded in the URL → running SSH agent → default key files (
~/.ssh/id_ed25519,~/.ssh/id_rsa,~/.ssh/id_ecdsa). - File is streamed in 32 KB chunks with a real-time progress bar.
- Clear, actionable error messages at every failure point.
- URL is parsed to extract
- FTP anonymous login failed when the URL contained no username.
url.username()from theurlcrate returns an empty string""(notNone) when the URL has no user segment. Passing""toftp.login()caused anonymous FTP servers to reject the connection. The downloader now falls back to"anonymous"in that case.
Added
- Interactive mode is now fully implemented. Previously
kget --interactiveopened a REPL that only printed"Would download: …"without performing any actual download. The mode is now feature-complete:- Unicode block-font ASCII art banner on entry.
rustylineline editor with persistent command history.download [flags] <url>— dispatches to the correct downloader based on flags:- Default: simple HTTP/HTTPS with retry and progress bar.
-a/--advanced/--turbo:AdvancedDownloader(parallel byte-range, resumable).--ftp: FTP downloader with anonymous fallback.--sftp: SFTP downloader with multi-method SSH auth.--torrentor auto-detectedmagnet:?prefix: native torrent engine.-o <path>,-q(quiet),--sha256 <hash>flags supported.
config [show | set <key> <value>]: reads and persists settings (connections,speed-limit,compression,cache).clear,version,help/?commands;get,dlas aliases fordownload.- Errors are printed and the REPL continues — a failed download never crashes the session.
Changed
- Mutex lock error handling in
AdvancedDownloader: all.unwrap()calls onMutex::lock()replaced with.expect("…")and descriptive messages, making panics easier to diagnose if a lock is ever poisoned. Optimizerpublic API cleanup: removed#[allow(dead_code)]from the public methodscompress,get_cached_file, andcache_file— these are valid library API surface and the suppression was masking legitimate lint signal.
Downloads
kget-1.6.2-linux-arm64kget-1.6.2-linux-x64-statickget-1.6.2-macos-arm64KGet-1.6.2-macOS-Native.dmgSHA256SUMS-1.6.2.txt: checksums for all release assets.
Rust Library
Install from crates.io:
cargo add Kget@1.6.2Or install the CLI:
cargo install KgetUse --features gui for the Rust GUI build and --features torrent-native for native torrent support.
Checksums
See SHA256SUMS-1.6.2.txt attached to this release.