Changelog
| English | Português | Español |
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[1.6.2] - 2026-04-28
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.
[1.6.1] - 2026-04-27
Added
- macOS app now validates magnet links before creating a download card.
- Completed downloads include Open File and Open Folder actions.
- macOS app context menu on download cards: Copy URL, Open Folder, Restart, and Remove.
- Keyboard shortcuts in the macOS app:
Cmd+V,Cmd+L,Esc, andDelete. - Expected SHA256 verification through CLI
--sha256 <hash>and libraryDownloadOptions::expected_sha256. - Public
verify_file_sha256helper for library users. - Native completion and failure notifications for the Rust GUI on Linux and Windows through
notify-rust.
Changed
- Duplicate URL or magnet submissions now focus the existing macOS download card instead of adding another card.
- Advanced downloads respect optimizer connection limits and reject invalid byte-range responses.
- Library documentation was refreshed in English, Portuguese, and Spanish for the current API.
Fixed
- Invalid magnet links are rejected before starting the torrent backend.
- SHA256 mismatch now fails the download instead of only printing the calculated hash.
[1.6.0] - 2026-03-02
Added
- Native macOS App (SwiftUI): Completely redesigned native macOS application with deep system integration.
- URL scheme handlers (
kget://,magnet:) - File associations (
.torrentfiles) - Menu bar integration with quick actions
- macOS Services menu support
- Native notifications
- Drag-and-drop DMG installer with visual guide (boxes, arrow, instruction text)
- URL scheme handlers (
- Improved Cross-Platform GUI: Major visual overhaul for the egui-based GUI (Linux/Windows).
- Download list with multiple concurrent downloads tracking
- TURBO badge for parallel downloads mode
- ISO badge for ISO files with automatic integrity verification
- Multi-segment progress bar showing parallel connections (C1, C2, C3, C4)
- Verification progress bar with purple theme and shield animation
- Connections indicator (⚡ 4x) for turbo mode
- Real-time speed and ETA display
- Empty state with protocol icons
- One-line URL input with integrated controls
- Compact layout with truncated filenames and URLs
- Proper button sizing and alignment
- Visual Improvements:
- Enhanced dark theme with better contrast
- Animated shimmer effects on progress bars
- Status-colored badges and icons
- Improved typography and spacing
- DMG installer background with dark theme, rounded boxes, chevron arrow, and instruction text
- Native Torrent Client (librqbit): Built-in BitTorrent support - no external apps needed!
- Magnet link downloads work directly in the GUI
- DHT peer discovery, parallel piece downloading
- Real-time progress with speed and ETA
- Expandable file list showing individual file progress (macOS app)
- Green TORRENT badge in download list
- Refactored GUI (Linux/Windows): Complete visual overhaul
- Clean, modern dark theme with consistent color palette
- Responsive layout that adapts to window size
- Smart truncation for long filenames and paths
- Inline folder selector with visual indicator
- Turbo mode and SHA256 verification toggles
- Shimmer animation on progress bars
- Retry button for failed downloads
- Status bar with active/completed counts
- Cross-Platform Build Script:
build-cross.shfor compiling Linux and Windows binaries from macOS - Automated Test Suite: 108+ tests covering torrents, CLI, config, and downloads
- New
tests/torrent_tests.rswith 42 torrent-specific tests run-tests.shscript for full test execution
- New
Changed
- GUI feature now includes torrent-native: Building with
--features guiautomatically enables native torrent support - Progress calculation: Fixed weighted progress for multi-file torrents
- Code quality: Refactored
gui.rsfrom 975 to 780 lines following Clean Code principles - Dependencies: Updated reqwest to 0.13.2 with hickory-dns
Fixed
- Torrent downloads opening external app instead of downloading in GUI
- Progress bar “spasming” during downloads - now only increases
- DHT persistence lock conflict with
disable_dht_persistence: true - Layout overflow issues with long URLs and filenames
Technical
- Uses
librqbit8.1.1 for native BitTorrent protocol - Session management with
Arc<Session>for proper cleanup - JSON output format for torrent file lists and progress
[1.5.4] - 2026-02-27
Added
- macOS App Bundle: Native
.appbundle for macOS users with easy drag-and-drop installation. - Easier version flag: Use
kget -vorkget --versionto display version (changed from-V). - Comprehensive test suite: Added 65+ tests covering unit tests, CLI integration tests, and mock server tests.
- Unit tests for
utils,config,download,optimizer,progress, and URL parsing. - CLI tests verifying all command-line flags and options.
- Mock server tests using
wiremockfor HTTP download simulation without real network requests.
- Unit tests for
- Testing infrastructure: Added
wiremock,assert_cmd,predicates, andtokio-testas dev-dependencies.
Changed
- Code cleanup: Resolved all 25 compiler warnings for a cleaner build output.
- Removed duplicate SFTP stub: Consolidated SFTP implementation by removing unused
ftp/sftp.rsfile that conflicted withsftp/mod.rs. - Public API improvements: Exported
get_filename_from_url_or_default,resolve_output_path, andprintfunctions from library root.
Fixed
- Removed unused imports across multiple modules (
BufWriter,Path,Read,Write,Url,Session,Sftp, etc.). - Fixed unnecessary
mutdeclarations indownload_whole(),download_chunks_parallel(), anddownload_worker(). - Prefixed intentionally unused function parameters with
_(output_dir,quiet,proxy,optimizerin torrent module). - Added
#[allow(dead_code)]annotations for fields and structs reserved for future use (TransmissionSettings,optimizerfield in downloaders).
[1.5.3] - 2025-12-23
Added
- Torrent backend selection: magnet links can now be handled by different backends.
- Default torrent behavior (no extra features): if the URL is a
magnet:?link, KGet opens it using the system’s default BitTorrent client (automatic detection via OS handler). - Optional Transmission RPC backend: build with
--features torrent-transmissionand setKGET_TORRENT_BACKEND=transmissionto download via Transmission RPC. - Transmission settings helper: centralized settings for host/port/paths and optional auth (env-compatible).
Changed
- GUI footer: app version is displayed in the bottom-right corner.
- GUI window sizing: improved default/min window sizing for a better first launch experience.
Fixed
- Build fixes and feature-gating improvements for optional components (torrent backends / GUI split).
[1.5.2] - 2025-12-19
Added
- ISO Smart Handling: Automatic detection of
.isofiles via URL and MIME type. - Corruption Prevention: ISO files now bypass decompression/optimization layers to ensure binary 1:1 integrity.
- Integrity Verification: Added optional SHA256 checksum calculation at the end of ISO downloads.
- Windows Dual Mode: The application now runs without a console window when launched via Explorer, but automatically attaches to the terminal when run via CLI.
Fixed
- Memory & Disk Optimization: Refactored
AdvancedDownloaderto use streaming writes withBufWriter, drastically reducing RAM usage and preventing 100% disk active time issues. - Verification Prompt: Fixed bug where integrity check was running automatically in advanced mode; it now correctly asks the user for confirmation.
- UI/UX: Cleaned up terminal output during parallel downloads for a smoother progress bar experience.
- GUI Icon: Fixed issue with loading the application window icon.
- Fixed Rust compiler error
E0382regardingMimetype ownership indownload.rs. - Improved parallel chunk writing safety for binary-heavy files.
[1.5.1] - 2025-12-18
Added
- Optional
guiCargo feature to make GUI dependencies opt-in; compile with--features guito enable GUI support. - Top-level convenience functions:
kget::download(...)andkget::advanced_download(...)for easier library usage. create_progress_bar_factory(...)exported to let consumers createindicatifprogress bars.examples/lib_usage.rsexample demonstrating library usage.- Docker development instructions and
docker-composeintegration to simplify building, testing and contributing.
Changed
- Updated README and
LIB.mdwith library usage instructions and examples. CONTRIBUTING.mdand translations updated with Docker contributor workflow.- GUI code split:
gui_typesmodule added so CLI builds without GUI feature.
Fixed / Misc
- Minor documentation fixes and translation updates (PT-BR/ES).
[1.5.0] - 2025-05-26
Added
- New public Rust crate: KGet can now be used as a library in your own Rust projects, click here to see more.
- Improved GUI: larger fonts, better layout, and more intuitive controls.
- Clipboard integration for easy pasting of URLs.
- Download button and cancel button now always visible and functional in the GUI.
- Interactive mode: Run
kget --interactivefor a REPL-like experience with commands such asdownload <url> [output],help, andexit.
Changed
- Project renamed from “KelpsGet” to “KGet” for simplicity and consistency.
- Versioning scheme updated from 0.1.4 to 1.5.0 to allow for more frequent minor updates and clearer release tracking.
- Features list moved from README to CHANGELOG for easier maintenance and to keep the README concise.
Removed
- Redundant or overly detailed features section from the README (now see CHANGELOG for all features).
[0.1.4] - 2025-05-22
Added
- Graphical User Interface (GUI) for easier downloads.
- FTP download support.
- SFTP download support (password and key-based authentication).
- Torrent download support via magnet links (integrates with Transmission daemon).
- Detailed instructions for Transmission daemon setup in README.
Changed
- Refined output path determination to align comportamento with
wget. - Ensured
final_pathis always absolute to prevent “No such file or directory” errors in CWD. - Updated README in English, Portuguese, and Spanish to reflect all new features and setup instructions.
Fixed
- Resolved “No such file or directory” error when downloading without
-Oby ensuring absolute paths. - Corrected
validate_filenameto only check the base filename, not the full path. - Addressed potential issues with
map_errinmain.rsfor torrent and HTTP downloads.
[0.1.3] - 2025-03-11
Added
- Advanced download mode with parallel chunks and resume capability
- Automatic compression support (gzip, brotli, lz4)
- Intelligent caching system for faster repeated downloads
- Speed limiting and connection control
- Multi-language documentation support
Changed
- Improved error handling and user feedback
- Enhanced progress bar with more detailed information
- Optimized memory usage for large file downloads
- Updated proxy configuration system
Fixed
- Fixed proxy authentication issues
- Resolved cache directory creation problems
- Fixed compression level handling
- Corrected file path handling on Windows
Security
- Added secure proxy connection handling
- Improved URL validation
- Enhanced file name sanitization
- Added space checking before downloads
[0.1.2] - 2025-03-10
Added
- Proxy support (HTTP, HTTPS, SOCKS5)
- Proxy authentication
- Custom output file naming
- MIME type detection
Changed
- Improved download speed calculation
- Enhanced progress bar display
- Better error messages
- Updated documentation
Fixed
- Fixed connection timeout issues
- Resolved file permission problems
- Corrected URL parsing
- Fixed progress bar display on Windows
[0.1.1] - 2025-03-09
Added
- Silent mode for script integration
- Basic progress bar
- File size display
- Download speed tracking
Changed
- Improved error handling
- Enhanced command-line interface
- Better file handling
- Updated installation instructions
Fixed
- Fixed path handling issues
- Resolved permission problems
- Corrected progress display
- Fixed file overwrite behavior
[0.1.0] - 2025-03-08
Added
- Initial release
- Basic file download functionality
- Command-line interface
- Basic error handling
- Cross-platform support