Skip to content

Releases: davimf721/KGet

KGet 1.6.2

01 May 19:54

Choose a tag to compare

KGet 1.6.2

Fixed

  • SFTP downloads were completely non-functional. The previous implementation passed the full sftp://… URL string directly to TcpStream::connect and 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, and remote_path correctly.
    • 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.
  • FTP anonymous login failed when the URL contained no username. url.username() from the url crate returns an empty string "" (not None) when the URL has no user segment. Passing "" to ftp.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 --interactive opened 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.
    • rustyline line 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.
      • --torrent or auto-detected magnet:? 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, dl as aliases for download.
    • Errors are printed and the REPL continues — a failed download never crashes the session.

Changed

  • Mutex lock error handling in AdvancedDownloader: all .unwrap() calls on Mutex::lock() replaced with .expect("…") and descriptive messages, making panics easier to diagnose if a lock is ever poisoned.
  • Optimizer public API cleanup: removed #[allow(dead_code)] from the public methods compress, get_cached_file, and cache_file — these are valid library API surface and the suppression was masking legitimate lint signal.

Downloads

  • kget-1.6.2-linux-arm64
  • kget-1.6.2-linux-x64-static
  • kget-1.6.2-macos-arm64
  • KGet-1.6.2-macOS-Native.dmg
  • SHA256SUMS-1.6.2.txt: checksums for all release assets.

Rust Library

Install from crates.io:

cargo add Kget@1.6.2

Or install the CLI:

cargo install Kget

Use --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

27 Apr 21:01

Choose a tag to compare

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 field DownloadOptions::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.1

Or install the CLI:

cargo install Kget

Use --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

02 Mar 19:39
47a8f04

Choose a tag to compare

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 librqbit for 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 .torrent file 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

27 Feb 20:52

Choose a tag to compare

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 wiremock for 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, and print functions 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 mut declarations in download functions
  • Added proper annotations for intentionally unused code reserved for future use

KGet v1.5.3

23 Dec 15:43

Choose a tag to compare

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=localhost
  • KGET_TRANSMISSION_PORT=9091
  • KGET_TRANSMISSION_RPC_PATH=/transmission/rpc
  • KGET_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

22 Dec 15:10
afbe059

Choose a tag to compare

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).
  • ISO Smart Handling + Corruption Prevention
    • Detects .iso via URL/MIME and enforces 1:1 binary transfer (no decompression/“optimization” layers that can corrupt images).
  • 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”.
  • GUI Icon Fixed
    • Corrected app window icon loading.

Notes

  • The GUI is still an opt-in feature: build with --features gui to 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

18 Dec 15:15

Choose a tag to compare

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, and kget::create_progress_bar_factory for simple library use.
  • Added examples/lib_usage.rs showcasing minimal library usage.
  • Binary guards: shared GUI types extracted; helpful runtime message when --gui is 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

27 May 03:27

Choose a tag to compare

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

22 May 23:42

Choose a tag to compare

🚀 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 --gui for 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 kelpsget

Option 3: Pre-compiled Binaries

Download from the Releases section.

🔧 Quick Setup for Torrents

  1. Install transmission-daemon:

    # Debian/Ubuntu
    sudo apt install transmission-daemon
    
    # Fedora
    sudo dnf install transmission-daemon
  2. 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
  3. Download torrents:

    kelpsget "magnet:?xt=urn:btih:YOUR_HASH_HERE"

📚 Usage Examples

GUI Mode

kelpsget --gui

FTP Downloads

kelpsget ftp://user:password@ftp.example.com/file.zip
kelpsget --ftp ftp://ftp.example.com/pub/file.txt

SFTP Downloads

kelpsget sftp://user@sftp.example.com/path/file.dat
kelpsget --sftp sftp://user@server.com/file.txt -O local.txt

Torrent 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

🤝 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

11 Mar 00:12
f60130f

Choose a tag to compare

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.zip

Configuração de Proxy

Configure seu proxy de três maneiras diferentes:

  1. Via Linha de Comando:
kelpsget -p http://proxy:8080 --proxy-user usuario --proxy-pass senha
  1. Via Variáveis de Ambiente:
export HTTP_PROXY=http://proxy:8080
export HTTPS_PROXY=http://proxy:8080
export SOCKS_PROXY=socks5://proxy:1080
  1. Via Arquivo de Configuração:
{
  "proxy": {
    "enabled": true,
    "url": "http://proxy:8080",
    "type": "http",
    "username": "usuario",
    "password": "senha"
  }
}

Instalação

cargo install kelpsget

Principais 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

Agradecemos o feedback da comunidade e continuamos trabalhando para tornar o KelpsGet ainda melhor!

#rust #opensource #download #rustlang #programming #proxy #networking