Releases: davimf721/KGet
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.
KGet 1.6.1 - Polish release
KGet 1.6.1 - Polish release
This release focuses on making KGet feel more complete, safer, and easier to use across the desktop app, CLI, and Rust library.
Highlights
- Magnet links are now validated before creating a download card.
- Duplicate URL/magnet submissions in the macOS app now focus the existing card instead of creating another one.
- Completed downloads now expose Open File and Open Folder actions.
- macOS download cards now include a context menu with Copy URL, Open Folder, Restart, and Remove.
- New macOS shortcuts: Cmd+V to paste and download, Cmd+L to focus the URL field, Esc to cancel, and Delete to remove.
- Expected SHA256 verification is now available through
kget --sha256 <hash>and the Rust library fieldDownloadOptions::expected_sha256. - New public Rust helper:
verify_file_sha256. - Advanced downloads now respect optimizer connection limits and reject servers that ignore byte-range requests.
- Linux/Windows Rust GUI builds now include native completion/failure notifications through
notify-rust. - Documentation was refreshed in English, Portuguese, and Spanish, including the library docs.
Downloads
KGet-1.6.1-macOS-Native.dmg: native macOS SwiftUI app.kget-1.6.1-linux-x64: Linux x64 CLI binary.kget-1.6.1-linux-x64-gui: Linux x64 GUI binary.kget-1.6.1-windows-x64.exe: Windows x64 CLI binary.SHA256SUMS-1.6.1.txt: checksums for all release assets.
Rust Library
Install from crates.io:
cargo add Kget@1.6.1Or 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.1.txt attached to this release.
KGet v1.6.0
KGet 1.6.0 is here! The most significant update yet for the Rust-powered download manager.
What's New
Native BitTorrent Client
- Download magnet links directly - no external apps needed!
- Built with
librqbitfor pure Rust performance - DHT peer discovery, parallel piece downloading
- Works in both CLI and GUI
Redesigned GUI
- Dark theme with modern aesthetics
- Multi-download tracking with real-time progress
- Turbo mode indicator ( 4x connections)
- Smart filename truncation
- Shimmer animations on progress bars
Native macOS App
- SwiftUI-based app with deep macOS integration
- URL scheme handlers (
kget://,magnet:) - Drag-and-drop
.torrentfile support - Menu bar integration
- Native notifications
Performance
- Parallel connections
- Auto-optimization based on file type
- Resume interrupted downloads
- SHA-256 integrity verification for ISOs
Kget 1.5.4 New Release
KGet v1.5.4
🎉 What's New
macOS App Bundle
Native .app bundle for macOS users! Simply drag KGet.app to your Applications folder for easy installation. Also available as a .dmg installer.
Comprehensive Test Suite
Added 65+ tests to ensure reliability and prevent regressions:
- 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
Easier Version Flag
Use kget -v or kget --version to display version (changed from -V for convenience).
Changes
- Code cleanup: Resolved all 25 compiler warnings for a cleaner build output
- Public API improvements: Exported
get_filename_from_url_or_default,resolve_output_path, andprintfunctions from library root - Removed duplicate SFTP stub: Consolidated SFTP implementation by removing unused
ftp/sftp.rs
Bug Fixes
- Removed unused imports across multiple modules
- Fixed unnecessary
mutdeclarations in download functions - Added proper annotations for intentionally unused code reserved for future use
KGet v1.5.3
KGet v1.5.3 — Release Notes (2025-12-23)
This release improves the first-run GUI experience, adds a cleaner footer/version display, and introduces a new torrent workflow that works out-of-the-box while keeping advanced torrent integration opt-in via Cargo features.
Highlights
Torrent downloads (Magnet links) — now works by default
- Default behavior (no extra features): when a URL starts with
magnet:?, KGet will open it using your system’s default BitTorrent client (qBittorrent, Transmission, etc.).
This means users don’t need any extra setup to handle magnets—KGet will automatically delegate to the installed client.
Optional Transmission RPC backend (feature-flagged)
- For users who want KGet to add/manage magnet downloads through Transmission RPC, build with:
--features torrent-transmission
- Select at runtime:
KGET_TORRENT_BACKEND=transmission
- If Transmission RPC is unavailable, KGet will fallback automatically to opening the magnet in the system client.
GUI improvements
- Version label displayed in the bottom-right footer.
- Improved initial window sizing, with a more user-friendly default/minimum size.
Changes
Added
- Torrent backend selection (external/system client by default; Transmission RPC optionally).
- Centralized Transmission settings helper (host/port/paths + optional auth; env-compatible).
Changed
- GUI footer layout and version positioning.
- GUI default/min window size.
Fixed
- Build/feature-gating improvements for optional components (GUI/torrent backends).
How to use
Default torrent behavior (no feature required)
- CLI:
kget "magnet:?xt=urn:btih:..."
- GUI:
- Paste the magnet link and start the download.
KGet will open the magnet in your system torrent client.
Transmission RPC backend (optional)
Build:
cargo build --release --features torrent-transmission- or with GUI:
cargo build --release --features "gui torrent-transmission"
Enable the backend:
- Linux/macOS:
export KGET_TORRENT_BACKEND=transmission
- Windows PowerShell (current session):
$env:KGET_TORRENT_BACKEND="transmission"
Optional settings (defaults shown):
KGET_TRANSMISSION_HOST=localhostKGET_TRANSMISSION_PORT=9091KGET_TRANSMISSION_RPC_PATH=/transmission/rpcKGET_TRANSMISSION_WEB_PATH=/transmission/web/- Auth (optional):
KGET_TRANSMISSION_USER,KGET_TRANSMISSION_PASS
Compatibility:
- Full URL env vars are also supported:
KGET_TRANSMISSION_URL,KGET_TRANSMISSION_WEB.
Notes
- The “external/system client” torrent behavior is the default and recommended baseline for end users.
- The optional Transmission backend keeps torrent integration modular so a fully native BitTorrent engine can be introduced in future releases.
Full changelog: see CHANGELOG.md.
KGet v1.5.2
KGet v1.5.2 — Native GUI + safer, lighter downloads
This release makes KGet feel like a real Windows app: when launched from Explorer it opens straight into the GUI with no console window. And when you run it from a terminal, it automatically attaches to the parent console so the CLI behaves normally and prints output as expected.
Highlights
- Windows Dual Mode (GUI/CLI)
- Double-click the
.exe: launches the GUI directly (no console). - Run from CMD/PowerShell: CLI output stays in your terminal (auto attach).
- Double-click the
- ISO Smart Handling + Corruption Prevention
- Detects
.isovia URL/MIME and enforces 1:1 binary transfer (no decompression/“optimization” layers that can corrupt images).
- Detects
- Integrity Verification (SHA256)
- Optional checksum calculation at the end of disk image downloads.
- Advanced Mode is much more efficient
- Streaming writes with
BufWriter: lower RAM usage, fewer freezes, and less “100% disk active time”.
- Streaming writes with
- GUI Icon Fixed
- Corrected app window icon loading.
Notes
- The GUI is still an opt-in feature: build with
--features guito enable it. - Full details are available in
CHANGELOG.md.
Usage
- CLI
kget <URL>
- GUI
kget --gui
If you hit any issues, please open an issue with logs and clear steps to reproduce.
KGet v1.5.1
KGet 1.5.1 Release Notes
Small update focused on improving library usage and making the GUI optional.
Highlights
- GUI is now opt-in via the Cargo feature
gui; non-GUI builds avoid GUI dependencies. - New top-level helpers:
kget::download,kget::advanced_download, andkget::create_progress_bar_factoryfor simple library use. - Added
examples/lib_usage.rsshowcasing minimal library usage. - Binary guards: shared GUI types extracted; helpful runtime message when
--guiis used without compiling the feature. - Documentation refreshed (README/LIB + translations) with crates.io install instructions for with/without GUI.
- CHANGELOG updated and commit message prepared for this release.
Install
- Binary (no GUI):
cargo install kget
- Binary (with GUI):
cargo install kget --features gui
- As a library dependency:
[dependencies] kget = "1.5.1" # without GUI kget = { version = "1.5.1", features = ["gui"] } # with GUI
Notes
- GUI builds may require system packages (e.g., X11/libxkbcommon/openssl on Linux).
- Torrent support still relies on a configured
transmission-daemon. - For cross-platform artifacts, consider building on matching OS targets or using
cross/CI.
KGet v1.5.0
KGet v1.5.0
Highlights:
- Project renamed: Now called KGet (was KelpsGet).
- Interactive mode: Run kget --interactive for a REPL-like CLI (commands: download, help, exit).
- Improved GUI: Larger fonts, better layout, always-visible download/cancel buttons, and clipboard integration.
- Public crate: Use KGet as a Rust library in your own projects (see usage).
- New versioning: Switched from 0.1.x to 1.5.x for clearer and more frequent updates.
Other:
- Features list moved to CHANGELOG.
- Many bugfixes and usability improvements.
See the README and LIB.md for usage instructions.
Thank you for using KGet!
KelpsGet v0.1.4 - Major Feature Release
🚀 KelpsGet v0.1.4 - Major Feature Release
We're excited to announce the release of KelpsGet v0.1.4, packed with powerful new features that expand the capabilities of our modern download manager!
🎉 What's New
🖥️ Graphical User Interface (GUI)
- New GUI Mode: Launch with
kelpsget --guifor a user-friendly graphical interface - Easy Downloads: Enter URLs, select output paths, and monitor progress visually
- Cross-Platform: Works seamlessly on Windows, Linux, and macOS
📁 FTP Download Support
- Full FTP Protocol: Download files from FTP servers with authentication
- Flexible Usage:
kelpsget ftp://user:pass@server.com/file.zip - Configuration: Customizable port and passive mode settings
🔐 SFTP Download Support
- Secure File Transfer: Download via SFTP with password or key-based authentication
- SSH Key Support: Use existing SSH keys for seamless authentication
- Security First: All transfers encrypted and secure
🌊 Torrent Download Support
- Magnet Link Support: Download torrents via magnet links
- Transmission Integration: Seamlessly integrates with transmission-daemon
- Web Interface: Automatically opens Transmission web UI for torrent management
- Easy Setup: Detailed instructions for transmission-daemon configuration
🛠️ Improvements
Enhanced Path Handling
- Absolute Paths: All file paths are now absolute to prevent directory errors
- wget Compatibility: Output path determination now aligns with wget behavior
- Robust Downloads: No more "No such file or directory" errors
Better Error Handling
- Improved Validation: Enhanced filename validation for safer downloads
- Clearer Messages: Better error reporting for troubleshooting
- Stability: Fixed potential issues with torrent and HTTP downloads
Updated Documentation
- Multi-language: Updated README in English, Portuguese, and Spanish
- Complete Setup: Detailed transmission-daemon setup instructions
- Usage Examples: Comprehensive examples for all new features
📋 Complete Feature Set
✅ Multiple Protocols: HTTP/HTTPS, FTP, SFTP, Torrents
✅ CLI & GUI: Command-line and graphical interfaces
✅ Progress Tracking: Real-time speed and ETA display
✅ Advanced Downloads: Parallel chunks and resume capability
✅ Proxy Support: HTTP, HTTPS, SOCKS5 with authentication
✅ Smart Features: Automatic compression, caching, speed limiting
✅ Cross-Platform: Linux, macOS, Windows support
✅ Security: Space checking, filename validation, secure connections
💾 Installation
Option 1: Compile from Source (Recommended)
git clone https://github.com/davimf721/KelpsGet.git
cd KelpsGet
cargo build --release
sudo cp target/release/kelpsget /usr/local/bin/Option 2: Via Cargo
cargo install kelpsgetOption 3: Pre-compiled Binaries
Download from the Releases section.
🔧 Quick Setup for Torrents
-
Install transmission-daemon:
# Debian/Ubuntu sudo apt install transmission-daemon # Fedora sudo dnf install transmission-daemon
-
Configure and start:
sudo systemctl stop transmission-daemon # Edit /var/lib/transmission-daemon/info/settings.json # Set rpc-username: "transmission", rpc-password: "transmission" sudo systemctl start transmission-daemon
-
Download torrents:
kelpsget "magnet:?xt=urn:btih:YOUR_HASH_HERE"
📚 Usage Examples
GUI Mode
kelpsget --guiFTP Downloads
kelpsget ftp://user:password@ftp.example.com/file.zip
kelpsget --ftp ftp://ftp.example.com/pub/file.txtSFTP Downloads
kelpsget sftp://user@sftp.example.com/path/file.dat
kelpsget --sftp sftp://user@server.com/file.txt -O local.txtTorrent Downloads
kelpsget "magnet:?xt=urn:btih:HASH&dn=TorrentName"
kelpsget --torrent "magnet:?xt=urn:btih:HASH" -O ~/Downloads/🐛 Bug Fixes
- ✅ Fixed "No such file or directory" errors with relative paths
- ✅ Corrected filename validation logic
- ✅ Resolved potential map_err issues in main.rs
- ✅ Enhanced error handling across all download types
🔗 Links
- 📦 crates.io: https://crates.io/crates/kelpsget
- 💻 GitHub: https://github.com/davimf721/KelpsGet
- 📚 Documentation: https://davimf721.github.io/KelpsGet/
- 🌍 Multi-language: Available in English, Portuguese, and Spanish
🤝 Contributing
We welcome contributions! Check out our Contributing Guide and Code of Conduct.
📜 License
KelpsGet is licensed under the MIT License. See LICENSE for details.
Download files effortlessly with the speed and reliability of Rust! 🚀
Checksums
Note: Add actual checksums for the release binaries when publishing
Full Changelog
See CHANGELOG.md for complete version history.
Thank you to all contributors who made this release possible! 🙏
KelpsGet v0.1.3
KelpsGet v0.1.3 - Otimização, Performance e Conectividade 🚀
Tenho o prazer de anunciar o lançamento do KelpsGet v0.1.3, agora com recursos avançados de otimização, performance e suporte completo a proxies!
📦 Disponível no crates.io: https://crates.io/crates/kelpsget
Novas Funcionalidades
🌐 Suporte Avançado a Proxies
- Múltiplos Protocolos: Suporte a HTTP, HTTPS e SOCKS5
- Autenticação: Suporte completo a autenticação básica
- Configuração Flexível: Configuração via linha de comando ou arquivo de configuração
- Integração Transparente: Funciona com todas as features de download e compressão
🔄 Sistema de Compressão Adaptativa
- Gzip (níveis 1-3): Ótimo para compressão rápida
- LZ4 (níveis 4-6): Balanceamento entre velocidade e compressão
- Brotli (níveis 7-9): Máxima compressão possível
💾 Sistema de Cache Inteligente
- Cache automático de downloads
- Verificação de integridade MD5
- Gerenciamento automático do espaço em disco
⚡ Melhorias de Performance
- Download paralelo de arquivos grandes
- Suporte a downloads resumíveis
- Otimização automática baseada no tipo de arquivo
Como Usar
# Download básico
kelpsget https://exemplo.com/arquivo.zip
# Download com proxy HTTP
kelpsget -p http://proxy:8080 https://exemplo.com/arquivo.zip
# Download com proxy SOCKS5
kelpsget -p socks5://proxy:1080 https://exemplo.com/arquivo.zip
# Download com proxy e autenticação
kelpsget -p http://proxy:8080 --proxy-user usuario --proxy-pass senha https://exemplo.com/arquivo.zip
# Download com proxy, compressão e cache
kelpsget -p http://proxy:8080 -l 9 -a https://exemplo.com/arquivo.zipConfiguração de Proxy
Configure seu proxy de três maneiras diferentes:
- Via Linha de Comando:
kelpsget -p http://proxy:8080 --proxy-user usuario --proxy-pass senha- Via Variáveis de Ambiente:
export HTTP_PROXY=http://proxy:8080
export HTTPS_PROXY=http://proxy:8080
export SOCKS_PROXY=socks5://proxy:1080- Via Arquivo de Configuração:
{
"proxy": {
"enabled": true,
"url": "http://proxy:8080",
"type": "http",
"username": "usuario",
"password": "senha"
}
}Instalação
cargo install kelpsgetPrincipais Melhorias
- 🌐 Suporte completo a proxies HTTP, HTTPS e SOCKS5
- 🔒 Autenticação segura de proxy
- ✨ Nova interface de linha de comando mais intuitiva
- 📊 Barra de progresso aprimorada
- 📝 Documentação completa das funcionalidades
Links Úteis
- 📦 Crates.io: https://crates.io/crates/kelpsget
- 📚 Documentação: https://docs.rs/kelpsget
- 💻 GitHub: https://github.com/davimf721/KelpsGet
Agradecemos o feedback da comunidade e continuamos trabalhando para tornar o KelpsGet ainda melhor!
#rust #opensource #download #rustlang #programming #proxy #networking