From c77337481e1566bd17c9d7eacaa9cb683ed99766 Mon Sep 17 00:00:00 2001 From: Lin Zhang Date: Thu, 12 Feb 2026 11:31:25 +0800 Subject: [PATCH 1/5] Update roadmap and project description Expand the roadmap with planned protocol support (FTP, BitTorrent, Magnet, HLS), resource sniffer, browser extension, and AI integration (MCP). Update the README tagline and add highlight bullets for key selling points. Co-Authored-By: Claude Opus 4.6 --- .claude/CLAUDE.md | 19 ++++++++++++++++--- README.md | 18 +++++++++++++++++- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/.claude/CLAUDE.md b/.claude/CLAUDE.md index acc650d0..baee88a4 100644 --- a/.claude/CLAUDE.md +++ b/.claude/CLAUDE.md @@ -164,6 +164,19 @@ cli/ # JVM CLI entry point Planned features not yet implemented: -1. **Web App** - Browser-based download manager UI -2. **Torrent Support** - BitTorrent protocol as a pluggable `DownloadSource` -3. **Media Downloads** - Web media extraction (like yt-dlp) as a pluggable `DownloadSource` +1. **FTP Support** - FTP/FTPS protocol as a pluggable `DownloadSource` +2. **BitTorrent Support** - BitTorrent protocol as a pluggable `DownloadSource`, with + segmented piece downloading and peer-to-peer transfers +3. **Magnet Link Support** - Magnet URI scheme for starting BitTorrent downloads without + a .torrent file (DHT/tracker-based metadata resolution) +4. **HLS Support** - HTTP Live Streaming (HLS) as a pluggable `DownloadSource`, downloading + and merging `.m3u8` playlist segments into a single media file +5. **Resource Sniffer** - Detect and extract downloadable resources (media, files) from + web pages by analyzing network requests, HTML, and embedded players +6. **Media Downloads** - Web media extraction (like yt-dlp) as a pluggable `DownloadSource`, + supporting various media sites and extractors +7. **Browser Extension** - Browser extension for intercepting and managing downloads + directly from the browser, integrating with the KDown daemon server +8. **AI Integration** - MCP server exposing KDown capabilities as tools for AI agents, + and skill-based automation (e.g., smart resource discovery, auto-categorization, + intelligent scheduling based on content type) diff --git a/README.md b/README.md index 4449b17b..cb3767f3 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,12 @@ [![JVM](https://img.shields.io/badge/JVM-11+-DB380E.svg?logo=openjdk&logoColor=white)](https://openjdk.org) [![Built with Claude Code](https://img.shields.io/badge/Built_with-Claude_Code-6b48ff.svg?logo=anthropic&logoColor=white)](https://claude.ai/claude-code) -A Kotlin Multiplatform download manager with segmented downloads, pause/resume, queue management, speed limiting, and scheduling -- for Android, JVM, iOS, and WebAssembly. +A full-featured Kotlin Multiplatform download manager — run locally, remotely, or embedded in your app. Supports Android, JVM, iOS, and WebAssembly. + +- **Embed it** — Add downloads to your Android, iOS, or Desktop app with a simple API +- **Run it as a daemon** — Self-hosted download server with REST API and real-time SSE events +- **Control it remotely** — Manage a daemon from any client (mobile app, web UI, CLI, or AI agent) +- **Extend it** — Pluggable architecture for custom protocols (FTP, BitTorrent, HLS, and more on the roadmap) > **WIP:** This project is under active development. APIs may change. Contributions and feedback are welcome! @@ -259,6 +264,17 @@ task.state.collect { /* real-time updates via SSE */ } ./gradlew :app:desktop:run ``` +## Roadmap + +- **FTP Support** - FTP/FTPS protocol as a pluggable download source +- **BitTorrent Support** - BitTorrent protocol with segmented piece downloading and P2P transfers +- **Magnet Link Support** - Magnet URI scheme with DHT/tracker-based metadata resolution +- **HLS Support** - HTTP Live Streaming, downloading and merging `.m3u8` playlist segments +- **Resource Sniffer** - Detect and extract downloadable resources from web pages +- **Media Downloads** - Web media extraction (like yt-dlp) with pluggable extractors +- **Browser Extension** - Browser extension for intercepting and managing downloads via the daemon server +- **AI Integration** - MCP server for AI agent tool access, skill-based automation (smart discovery, auto-categorization, intelligent scheduling) + ## Contributing Contributions are welcome! Please open an issue to discuss your idea before submitting a PR. From d8116e57059305a00d77abe89adbc1d2d82f506b Mon Sep 17 00:00:00 2001 From: Lin Zhang Date: Thu, 12 Feb 2026 11:33:37 +0800 Subject: [PATCH 2/5] Move roadmap under WIP and add availability tags to features Co-Authored-By: Claude Opus 4.6 --- README.md | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index cb3767f3..a49e5375 100644 --- a/README.md +++ b/README.md @@ -18,22 +18,33 @@ A full-featured Kotlin Multiplatform download manager — run locally, remotely, > **WIP:** This project is under active development. APIs may change. Contributions and feedback are welcome! +### Roadmap + +- FTP/FTPS protocol support +- BitTorrent with segmented piece downloading and P2P transfers +- Magnet link support with DHT/tracker-based metadata resolution +- HLS streaming — download and merge `.m3u8` playlist segments +- Resource sniffer — detect downloadable resources from web pages +- Media downloads — web media extraction (like yt-dlp) with pluggable extractors +- Browser extension for intercepting downloads via the daemon server +- AI integration — MCP server for AI agent tool access and skill-based automation + ## Features -- **Multi-platform** -- Android, iOS, JVM/Desktop, and WebAssembly (WasmJs) -- **Segmented downloads** -- Split files into N concurrent segments using HTTP Range requests -- **Pause / Resume** -- True resume using byte ranges, with ETag/Last-Modified validation -- **Queue management** -- Priority-based queue with configurable concurrency limits and per-host throttling -- **Speed limiting** -- Global and per-task bandwidth throttling via token-bucket algorithm -- **Scheduling** -- Start downloads at a specific time, after a delay, or when conditions are met -- **Download conditions** -- User-defined conditions (e.g., WiFi-only) that gate download start -- **Pluggable sources** -- Extensible `DownloadSource` interface for custom protocols (HTTP built-in) -- **Persistent resume** -- Task metadata survives app restarts via pluggable `TaskStore` -- **Progress tracking** -- Aggregated progress across segments via `StateFlow`, with download speed -- **Retry with backoff** -- Configurable exponential backoff for transient errors -- **Daemon server** -- Run KDown as a background service with REST API and SSE events -- **Remote control** -- Control a daemon server from any client via `RemoteKDown` -- **Pluggable HTTP engine** -- Ships with Ktor; bring your own `HttpEngine` if needed +- **Multi-platform** `✅ Available` -- Android, iOS, JVM/Desktop, and WebAssembly (WasmJs) +- **Segmented downloads** `✅ Available` -- Split files into N concurrent segments using HTTP Range requests +- **Pause / Resume** `✅ Available` -- True resume using byte ranges, with ETag/Last-Modified validation +- **Queue management** `✅ Available` -- Priority-based queue with configurable concurrency limits and per-host throttling +- **Speed limiting** `✅ Available` -- Global and per-task bandwidth throttling via token-bucket algorithm +- **Scheduling** `✅ Available` -- Start downloads at a specific time, after a delay, or when conditions are met +- **Download conditions** `✅ Available` -- User-defined conditions (e.g., WiFi-only) that gate download start +- **Pluggable sources** `✅ Available` -- Extensible `DownloadSource` interface for custom protocols (HTTP built-in) +- **Persistent resume** `✅ Available` -- Task metadata survives app restarts via pluggable `TaskStore` +- **Progress tracking** `✅ Available` -- Aggregated progress across segments via `StateFlow`, with download speed +- **Retry with backoff** `✅ Available` -- Configurable exponential backoff for transient errors +- **Daemon server** `✅ Available` -- Run KDown as a background service with REST API and SSE events +- **Remote control** `✅ Available` -- Control a daemon server from any client via `RemoteKDown` +- **Pluggable HTTP engine** `✅ Available` -- Ships with Ktor; bring your own `HttpEngine` if needed ## Quick Start @@ -264,17 +275,6 @@ task.state.collect { /* real-time updates via SSE */ } ./gradlew :app:desktop:run ``` -## Roadmap - -- **FTP Support** - FTP/FTPS protocol as a pluggable download source -- **BitTorrent Support** - BitTorrent protocol with segmented piece downloading and P2P transfers -- **Magnet Link Support** - Magnet URI scheme with DHT/tracker-based metadata resolution -- **HLS Support** - HTTP Live Streaming, downloading and merging `.m3u8` playlist segments -- **Resource Sniffer** - Detect and extract downloadable resources from web pages -- **Media Downloads** - Web media extraction (like yt-dlp) with pluggable extractors -- **Browser Extension** - Browser extension for intercepting and managing downloads via the daemon server -- **AI Integration** - MCP server for AI agent tool access, skill-based automation (smart discovery, auto-categorization, intelligent scheduling) - ## Contributing Contributions are welcome! Please open an issue to discuss your idea before submitting a PR. From 85101a1c38945293610defbbb72c76d538841c13 Mon Sep 17 00:00:00 2001 From: Lin Zhang Date: Thu, 12 Feb 2026 11:38:23 +0800 Subject: [PATCH 3/5] Merge roadmap into features with planned/available tags Co-Authored-By: Claude Opus 4.6 --- README.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index a49e5375..d5b42f8d 100644 --- a/README.md +++ b/README.md @@ -18,17 +18,6 @@ A full-featured Kotlin Multiplatform download manager — run locally, remotely, > **WIP:** This project is under active development. APIs may change. Contributions and feedback are welcome! -### Roadmap - -- FTP/FTPS protocol support -- BitTorrent with segmented piece downloading and P2P transfers -- Magnet link support with DHT/tracker-based metadata resolution -- HLS streaming — download and merge `.m3u8` playlist segments -- Resource sniffer — detect downloadable resources from web pages -- Media downloads — web media extraction (like yt-dlp) with pluggable extractors -- Browser extension for intercepting downloads via the daemon server -- AI integration — MCP server for AI agent tool access and skill-based automation - ## Features - **Multi-platform** `✅ Available` -- Android, iOS, JVM/Desktop, and WebAssembly (WasmJs) @@ -45,6 +34,14 @@ A full-featured Kotlin Multiplatform download manager — run locally, remotely, - **Daemon server** `✅ Available` -- Run KDown as a background service with REST API and SSE events - **Remote control** `✅ Available` -- Control a daemon server from any client via `RemoteKDown` - **Pluggable HTTP engine** `✅ Available` -- Ships with Ktor; bring your own `HttpEngine` if needed +- **FTP/FTPS** `🔮 Planned` -- FTP/FTPS protocol as a pluggable download source +- **BitTorrent** `🔮 Planned` -- Segmented piece downloading and peer-to-peer transfers +- **Magnet links** `🔮 Planned` -- Magnet URI scheme with DHT/tracker-based metadata resolution +- **HLS streaming** `🔮 Planned` -- Download and merge `.m3u8` playlist segments +- **Resource sniffer** `🔮 Planned` -- Detect downloadable resources from web pages +- **Media downloads** `🔮 Planned` -- Web media extraction (like yt-dlp) with pluggable extractors +- **Browser extension** `🔮 Planned` -- Intercept and manage downloads via the daemon server +- **AI integration** `🔮 Planned` -- MCP server for AI agent tool access and skill-based automation ## Quick Start From f6b237ebdfc49bba7891c638e4be3ee7a62efd8d Mon Sep 17 00:00:00 2001 From: Lin Zhang Date: Thu, 12 Feb 2026 11:39:56 +0800 Subject: [PATCH 4/5] =?UTF-8?q?Simplify=20feature=20tags=20to=20=E2=9C=85?= =?UTF-8?q?=20and=20=F0=9F=94=9C=20Planned?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- README.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index d5b42f8d..bd5a62bc 100644 --- a/README.md +++ b/README.md @@ -20,28 +20,28 @@ A full-featured Kotlin Multiplatform download manager — run locally, remotely, ## Features -- **Multi-platform** `✅ Available` -- Android, iOS, JVM/Desktop, and WebAssembly (WasmJs) -- **Segmented downloads** `✅ Available` -- Split files into N concurrent segments using HTTP Range requests -- **Pause / Resume** `✅ Available` -- True resume using byte ranges, with ETag/Last-Modified validation -- **Queue management** `✅ Available` -- Priority-based queue with configurable concurrency limits and per-host throttling -- **Speed limiting** `✅ Available` -- Global and per-task bandwidth throttling via token-bucket algorithm -- **Scheduling** `✅ Available` -- Start downloads at a specific time, after a delay, or when conditions are met -- **Download conditions** `✅ Available` -- User-defined conditions (e.g., WiFi-only) that gate download start -- **Pluggable sources** `✅ Available` -- Extensible `DownloadSource` interface for custom protocols (HTTP built-in) -- **Persistent resume** `✅ Available` -- Task metadata survives app restarts via pluggable `TaskStore` -- **Progress tracking** `✅ Available` -- Aggregated progress across segments via `StateFlow`, with download speed -- **Retry with backoff** `✅ Available` -- Configurable exponential backoff for transient errors -- **Daemon server** `✅ Available` -- Run KDown as a background service with REST API and SSE events -- **Remote control** `✅ Available` -- Control a daemon server from any client via `RemoteKDown` -- **Pluggable HTTP engine** `✅ Available` -- Ships with Ktor; bring your own `HttpEngine` if needed -- **FTP/FTPS** `🔮 Planned` -- FTP/FTPS protocol as a pluggable download source -- **BitTorrent** `🔮 Planned` -- Segmented piece downloading and peer-to-peer transfers -- **Magnet links** `🔮 Planned` -- Magnet URI scheme with DHT/tracker-based metadata resolution -- **HLS streaming** `🔮 Planned` -- Download and merge `.m3u8` playlist segments -- **Resource sniffer** `🔮 Planned` -- Detect downloadable resources from web pages -- **Media downloads** `🔮 Planned` -- Web media extraction (like yt-dlp) with pluggable extractors -- **Browser extension** `🔮 Planned` -- Intercept and manage downloads via the daemon server -- **AI integration** `🔮 Planned` -- MCP server for AI agent tool access and skill-based automation +- **Multi-platform** `✅` -- Android, iOS, JVM/Desktop, and WebAssembly (WasmJs) +- **Segmented downloads** `✅` -- Split files into N concurrent segments using HTTP Range requests +- **Pause / Resume** `✅` -- True resume using byte ranges, with ETag/Last-Modified validation +- **Queue management** `✅` -- Priority-based queue with configurable concurrency limits and per-host throttling +- **Speed limiting** `✅` -- Global and per-task bandwidth throttling via token-bucket algorithm +- **Scheduling** `✅` -- Start downloads at a specific time, after a delay, or when conditions are met +- **Download conditions** `✅` -- User-defined conditions (e.g., WiFi-only) that gate download start +- **Pluggable sources** `✅` -- Extensible `DownloadSource` interface for custom protocols (HTTP built-in) +- **Persistent resume** `✅` -- Task metadata survives app restarts via pluggable `TaskStore` +- **Progress tracking** `✅` -- Aggregated progress across segments via `StateFlow`, with download speed +- **Retry with backoff** `✅` -- Configurable exponential backoff for transient errors +- **Daemon server** `✅` -- Run KDown as a background service with REST API and SSE events +- **Remote control** `✅` -- Control a daemon server from any client via `RemoteKDown` +- **Pluggable HTTP engine** `✅` -- Ships with Ktor; bring your own `HttpEngine` if needed +- **FTP/FTPS** `🔜 Planned` -- FTP/FTPS protocol as a pluggable download source +- **BitTorrent** `🔜 Planned` -- Segmented piece downloading and peer-to-peer transfers +- **Magnet links** `🔜 Planned` -- Magnet URI scheme with DHT/tracker-based metadata resolution +- **HLS streaming** `🔜 Planned` -- Download and merge `.m3u8` playlist segments +- **Resource sniffer** `🔜 Planned` -- Detect downloadable resources from web pages +- **Media downloads** `🔜 Planned` -- Web media extraction (like yt-dlp) with pluggable extractors +- **Browser extension** `🔜 Planned` -- Intercept and manage downloads via the daemon server +- **AI integration** `🔜 Planned` -- MCP server for AI agent tool access and skill-based automation ## Quick Start From 0471b652a7b677c665cfc0cfaf98791e50f832e5 Mon Sep 17 00:00:00 2001 From: Lin Zhang Date: Thu, 12 Feb 2026 11:40:10 +0800 Subject: [PATCH 5/5] =?UTF-8?q?Simplify=20planned=20tag=20to=20just=20?= =?UTF-8?q?=F0=9F=94=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.6 --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index bd5a62bc..eb6419a1 100644 --- a/README.md +++ b/README.md @@ -34,14 +34,14 @@ A full-featured Kotlin Multiplatform download manager — run locally, remotely, - **Daemon server** `✅` -- Run KDown as a background service with REST API and SSE events - **Remote control** `✅` -- Control a daemon server from any client via `RemoteKDown` - **Pluggable HTTP engine** `✅` -- Ships with Ktor; bring your own `HttpEngine` if needed -- **FTP/FTPS** `🔜 Planned` -- FTP/FTPS protocol as a pluggable download source -- **BitTorrent** `🔜 Planned` -- Segmented piece downloading and peer-to-peer transfers -- **Magnet links** `🔜 Planned` -- Magnet URI scheme with DHT/tracker-based metadata resolution -- **HLS streaming** `🔜 Planned` -- Download and merge `.m3u8` playlist segments -- **Resource sniffer** `🔜 Planned` -- Detect downloadable resources from web pages -- **Media downloads** `🔜 Planned` -- Web media extraction (like yt-dlp) with pluggable extractors -- **Browser extension** `🔜 Planned` -- Intercept and manage downloads via the daemon server -- **AI integration** `🔜 Planned` -- MCP server for AI agent tool access and skill-based automation +- **FTP/FTPS** `🔜` -- FTP/FTPS protocol as a pluggable download source +- **BitTorrent** `🔜` -- Segmented piece downloading and peer-to-peer transfers +- **Magnet links** `🔜` -- Magnet URI scheme with DHT/tracker-based metadata resolution +- **HLS streaming** `🔜` -- Download and merge `.m3u8` playlist segments +- **Resource sniffer** `🔜` -- Detect downloadable resources from web pages +- **Media downloads** `🔜` -- Web media extraction (like yt-dlp) with pluggable extractors +- **Browser extension** `🔜` -- Intercept and manage downloads via the daemon server +- **AI integration** `🔜` -- MCP server for AI agent tool access and skill-based automation ## Quick Start