mirror of
https://github.com/nimbold/Firelink.git
synced 2026-07-26 12:08:27 +00:00
136 lines
5.0 KiB
Markdown
136 lines
5.0 KiB
Markdown
<div align="center">
|
|
<img src="src/assets/app-icon.png" alt="Firelink" width="112" height="112" />
|
|
|
|
# Firelink
|
|
|
|
**A fast, focused desktop download manager powered by Rust and Tauri.**
|
|
|
|
[](https://github.com/nimbold/Firelink/releases)
|
|
[](#project-status)
|
|
[](https://tauri.app/)
|
|
[](https://www.rust-lang.org/)
|
|
[](LICENSE)
|
|
[](https://github.com/nimbold/Firelink/actions/workflows/ci.yml)
|
|
|
|
[Features](#features) · [Install](#installation) · [Development](#development) · [Project status](#project-status)
|
|
</div>
|
|
|
|
Firelink brings segmented downloads, media extraction, scheduling, and browser
|
|
integration into one native-feeling desktop application. The current app uses a
|
|
Rust backend with a React and TypeScript interface, replacing the original
|
|
SwiftUI implementation.
|
|
|
|
## Features
|
|
|
|
- **Fast transfers** with segmented downloading powered by aria2
|
|
- **Media downloads** through yt-dlp, FFmpeg, and Deno
|
|
- **Persistent queues** with configurable concurrency and speed limits
|
|
- **Download scheduling** with optional post-queue system actions
|
|
- **Pause, resume, retry, and duplicate-file handling**
|
|
- **Smart organization** with categories and configurable destinations
|
|
- **Browser integration** through the Firelink Companion extension
|
|
- **Secure local handoff** using authenticated extension pairing
|
|
- **System integration** including tray controls, notifications, and sleep prevention
|
|
- **Built-in update checks** backed by GitHub Releases
|
|
|
|
## Installation
|
|
|
|
> [!IMPORTANT]
|
|
> The Rust and Tauri application is still completing release packaging. The
|
|
> current `v0.7.3` macOS asset on GitHub Releases belongs to the archived SwiftUI
|
|
> implementation.
|
|
|
|
For now, run the maintained application from source using the development
|
|
instructions below. New packaged builds will be published through
|
|
[GitHub Releases](https://github.com/nimbold/Firelink/releases) once the
|
|
migration is complete.
|
|
|
|
Firelink is currently developed and tested on macOS. Production bundles include
|
|
the media engines, so packaged releases will not require separate aria2, yt-dlp,
|
|
FFmpeg, or Deno installations.
|
|
|
|
### Browser Extension
|
|
|
|
Install [Firelink Companion for Firefox](https://addons.mozilla.org/en-US/firefox/addon/firelink-companion/)
|
|
to send browser downloads directly to Firelink. Pair the extension from
|
|
**Settings → Integrations** using the generated local token.
|
|
|
|
## Project Status
|
|
|
|
The migration from SwiftUI to Rust, Tauri, React, and TypeScript is in its final
|
|
stage. The new application is the maintained implementation at the repository
|
|
root.
|
|
|
|
| Target | Status |
|
|
| --- | --- |
|
|
| macOS | Active development and automated testing |
|
|
| Windows | Core architecture prepared; packaging and validation pending |
|
|
| Linux | Core architecture prepared; packaging and validation pending |
|
|
| Legacy SwiftUI app | Archived in [`legacy/swift`](legacy/swift) |
|
|
|
|
See the [changelog](CHANGELOG.md) for release history and recent work.
|
|
|
|
## Development
|
|
|
|
### Requirements
|
|
|
|
- Node.js 22 or newer
|
|
- npm
|
|
- Rust and Cargo
|
|
- [Tauri 2 platform prerequisites](https://v2.tauri.app/start/prerequisites/)
|
|
|
|
Clone the repository with its browser-extension submodule:
|
|
|
|
```sh
|
|
git clone --recurse-submodules https://github.com/nimbold/Firelink.git
|
|
cd Firelink
|
|
```
|
|
|
|
Install dependencies and launch the desktop app:
|
|
|
|
```sh
|
|
npm install
|
|
npm run tauri dev
|
|
```
|
|
|
|
Run the frontend build and backend tests:
|
|
|
|
```sh
|
|
npm run build
|
|
cd src-tauri
|
|
cargo test --all-targets
|
|
```
|
|
|
|
Create a production bundle:
|
|
|
|
```sh
|
|
npm run tauri build
|
|
```
|
|
|
|
Native media executables and runtime files are expected in
|
|
`src-tauri/binaries` when running or packaging the application locally.
|
|
|
|
## Repository Structure
|
|
|
|
```text
|
|
.
|
|
├── src/ React and TypeScript interface
|
|
├── src-tauri/ Rust backend and Tauri configuration
|
|
├── Extensions/Firefox/ Firelink Companion submodule
|
|
└── legacy/swift/ Archived SwiftUI application
|
|
```
|
|
|
|
## Technology
|
|
|
|
- [Tauri 2](https://tauri.app/) for the desktop runtime
|
|
- [Rust](https://www.rust-lang.org/) and [Tokio](https://tokio.rs/) for native application logic
|
|
- [React](https://react.dev/) and [TypeScript](https://www.typescriptlang.org/) for the interface
|
|
- [Zustand](https://zustand-demo.pmnd.rs/) for frontend state
|
|
- [SQLite](https://www.sqlite.org/) for persistent application data
|
|
- [aria2](https://aria2.github.io/), [yt-dlp](https://github.com/yt-dlp/yt-dlp),
|
|
[FFmpeg](https://ffmpeg.org/), and [Deno](https://deno.com/) for download and media processing
|
|
|
|
## License
|
|
|
|
Firelink is available under the [MIT License](LICENSE).
|